Problème de compilation avec gcc sous code::blocks
Bonjour, je suis nouveau sur le forum. Je ne savais pas trop où poster
ce message: j'espère ne pas m'etre trompé de rubrique...
J'ai un petit problème avec la classe singleton. Voici le code:
******************************************************
//=========================================
// Classe SINGLETON
//=========================================
#ifndef SINGLETON_H
#define SINGLETON_H
template <class T>
class Singleton
{
public :
static T& Instance() // Instanciation & accession de type reference
{
if (!m_Inst) m_Inst = new T;
return *m_Inst;
}
static T* PtrInstance() // Instanciation & accession de type pointeur
{
if (!m_Inst) m_Inst = new T;
return m_Inst;
}
static void Destroy() // Liberation des ressources
{
delete m_Inst;
m_Inst = NULL;
}
protected :
Singleton() {}
~Singleton() {}
private :
static T* m_Inst; // Instance de la classe
Singleton ( Singleton & ) ; // Supression du constructeur de copie
void operator = (Singleton &) ; // Supression de la copie
};
template<class T> T* Singleton<T>::m_Inst = NULL; // ce qui pose probleme
#endif
***********************************************************
Voila; ce code est sensé marcher puisque je l'ai déja utilisé à de
tres nombreuses reprises pour dévellopper de petits programmes.
Le hic, c'est que j'ai changer de compilateur pour pouvoir utiliser
Ogre (un moteur 3D)
en faisant un simple #include du code ci dessus j'ai le message d'erreur
suivant:
"error: expected initializer before '<' token"
cette erreur ce ratache à la ligne de code:
"template<class T> T* Singleton<T>::m_Inst = NULL;"
Je ne sais pas trop comment faire pour régler ce problème;
voici le compilo et l'EDI que j'emploi:
Code::blocks Nightly build
gcc core 3.4.5
g++ 3.4.5
En fait, c'est la configuration décrite dans le lien suivant
http://www.ogre3d.org/wiki/index.php/CodeBlocks_MingW_STLPort
merci d'avance pour vos réponses
@+