Estoy desarrollando un motor para transferir el código existente a una plataforma diferente. El código existente se ha desarrollado utilizando una API de terceros, y mi motor redefinirá esas funciones de API de terceros en términos de mi nueva plataforma.¿Debo devolver un iterador o un puntero a un elemento en un contenedor STL?
Las siguientes definiciones proceden de la API:
typedef unsigned long shape_handle;
shape_handle make_new_shape(int type);
necesito para redefinir make_new_shape
y tengo la opción de redefinir shape_handle
.
he definido esta estructura (simplificada):
struct Shape
{
int type
};
El Llamador de make_new_shape
no se preocupa por la estructura subyacente de Shape
, sólo se necesita un "manejar" a ella para que pueda llamar a funciones como:
void `set_shape_color(myshape, RED);`
donde myshape
es el identificador de la forma.
Mi motor administrará la memoria para los objetos Shape
y otros requisitos determinan que el motor debe almacenar objetos Shape
en una lista u otro contenedor iterable.
Mi pregunta es, ¿cuál es la forma más segura de representar este identificador - si el Shape
se va a almacenar en una lista estándar - un iterador, un puntero, un índice?
¿Por qué ha elegido std :: list? –
@jk - Necesito poder agregar y eliminar objetos 'Shape' del centro del contenedor. – BeeBand
Definitivamente no quiere redefinir shape_handle (o make_new_shape). –