Tengo problemas para acceder a una propiedad estática en una clase. Estoy consiguiendo el error siguiente:C++ Static Propiedad
shape.obj : error LNK2001: unresolved external symbol "public: static class TCollection<class Shape *> Shape::shapes"
La definición de la clase es:
class Shape {
public:
static Collection<Shape*> shapes;
static void get_all_instances(Collection<Shape*> &list);
};
Y la aplicación del método de ser estática:
void Shape::get_all_instances(Collection<Shape*> &list) {
list = Shape::shapes;
}
parece que el La propiedad shapes
no se está inicializando.
¡Gracias por los comentarios rápidos! Tomó horas investigar y aproximadamente 1 minuto en StackOverflow. – Louis
Creo que lamentará tanto tener una variable estática como tener una variable pública. ¿En serio necesitas eso? ¿Por qué no simplemente pasas una colección const & object donde sea que necesites una lista de todas las formas? Esto alentará a otros desarrolladores a llamar a Shape :: get_all_instances() cada vez que necesiten la lista, en lugar de pasarla explícitamente. Esto dará lugar a todo tipo de problemas, cuando desee probar o desee operar en sublistas de formas. –
Sí, es público en este momento debido a la depuración furiosa. – Louis