Я разрабатываю движок для переноса существующего кода на другую платформу. Существующий код был разработан с использованием стороннего API, и мой движок переопределит эти сторонние функции API в терминах моей новой платформы.
Следующие определения взяты из 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 - итератор, указатель, индекс?