Tommo
30-04-2009, 11:35
Salve,
non so perchè ma mi trovo sempre in queste situazioni tali da odiare C++ :D
La situazione è questa: ho una classe Class ereditata da n ClassType<T> che sono classi template.
Ora, dentro ogni ClassType<T> è definito un puntatore statico, che viene inizializzato a NULL nel suo .cpp:
template<class T>
class ClassType : public Class
{
...
protected:
static ClassInfo* classInfo;
}
//CPP
template<class T>
Class::ClassInfo* ClassType<T>::classInfo = NULL;
Teoricamente lui dovrebbe, per ogni T trovato, inizializzare quel membro statico a NULL... ma invece non lo fa, e ottengo caterve di errori di linking!
Ho provato a spostare la definizione nell'header: non dà più errore quando si tenta di creare la classe, ma da errore ogni volta che si tenta di usare classInfo.
Qualcuno sa dirmi dove sbaglio (apparte che nel cercare di fare queste cose ovviamente)? :muro:
non so perchè ma mi trovo sempre in queste situazioni tali da odiare C++ :D
La situazione è questa: ho una classe Class ereditata da n ClassType<T> che sono classi template.
Ora, dentro ogni ClassType<T> è definito un puntatore statico, che viene inizializzato a NULL nel suo .cpp:
template<class T>
class ClassType : public Class
{
...
protected:
static ClassInfo* classInfo;
}
//CPP
template<class T>
Class::ClassInfo* ClassType<T>::classInfo = NULL;
Teoricamente lui dovrebbe, per ogni T trovato, inizializzare quel membro statico a NULL... ma invece non lo fa, e ottengo caterve di errori di linking!
Ho provato a spostare la definizione nell'header: non dà più errore quando si tenta di creare la classe, ma da errore ogni volta che si tenta di usare classInfo.
Qualcuno sa dirmi dove sbaglio (apparte che nel cercare di fare queste cose ovviamente)? :muro: