我正在開發一個將現有代碼移植到不同平臺的引擎。現有代碼是使用第三方API開發的,我的引擎將根據我的新平臺重新定義這些第三方API函數。我應該返回一個迭代器或指向STL容器中的元素的指針嗎?
下面的定義來自於API:
typedef unsigned long shape_handle;
shape_handle make_new_shape(int type);
我需要重新定義make_new_shape
,我必須重新定義shape_handle
的選項。
我定義這個結構(簡體):
struct Shape
{
int type
};
的make_new_shape
調用者不關心Shape
的基礎結構,它只是需要一個「處理」給它,這樣它可以調用函數如:
void `set_shape_color(myshape, RED);`
其中myshape
是形狀的句柄。
我的引擎將管理對象Shape
的內存和其他要求,指示引擎應將Shape
對象存儲在列表或其他可迭代容器中。
我的問題是,什麼是最安全的方式來表示這個句柄 - 如果Shape
本身將存儲在一個std :: list - 一個迭代器,一個指針,一個索引?如果您嘗試訪問這些對象已被刪除後,所以也不是本質安全的
你爲什麼選擇std :: list? – 2010-09-13 12:00:21
@jk - 我需要能夠從容器的中間添加和移除'Shape'對象。 – BeeBand 2010-09-13 13:03:50
你肯定不想重新定義shape_handle(或make_new_shape)。 – 2010-09-13 14:41:27