Si verificano problemi durante l'accesso a una proprietà statica in una classe. Sto ottenendo il seguente errore:Proprietà statica C++
shape.obj : error LNK2001: unresolved external symbol "public: static class TCollection<class Shape *> Shape::shapes"
La definizione della classe è:
class Shape {
public:
static Collection<Shape*> shapes;
static void get_all_instances(Collection<Shape*> &list);
};
E l'attuazione del metodo statico dell'essere:
void Shape::get_all_instances(Collection<Shape*> &list) {
list = Shape::shapes;
}
Sembra che il La proprietà shapes
non viene inizializzata.
Wow, grazie per il feedback rapido. Ci sono voluti ore per la ricerca e circa 1 minuto su StackOverflow. – Louis
Penso che rimpiangerete molto sia di avere una variabile statica che di avere una variabile pubblica. Ne hai davvero bisogno? Perché non passi semplicemente una collezione const e oggetti ovunque ti serva una lista di tutte le forme? Questo incoraggerà altri sviluppatori a chiamare Shape :: get_all_instances() ogni volta che hanno bisogno dell'elenco, invece di passarlo esplicitamente. Questo porterà a tutti i tipi di problemi, quando vuoi testare o vuoi operare su sottoliste di forme. –
Sì, al momento è pubblico a causa del furioso debugging. – Louis