Bonjour,

Je veux créer une classe Singleton à base de template pour mon programme et je voudrais donc faire un pointeur vers l'objet Singleton (qui devra de plus être statique pour le reste du programme, pour que ce soit plus pratique). Pour être sûr de manipuler un pointeur 'neuf', je veux l'initialiser à NULL comme par exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ecran* ecran::instance = NULL;
J'ai donc essayé de deviner ce que ça donnerait avec un template et j'ai essayé plusieurs syntaxes, mais le compilateur n'en veut pas . Je pensais donc à quelque chose comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
T Singleton::m_instance = NULL;
//'T' does not name a type
<T*> Singleton::m_instance = NULL;
//error: expected unqualified-id before '<' token
<T> *Singleton::m_instance = NULL;
//error: expected unqualified-id before '<' token
Ce n'est pas tout ce que j'ai essayé mais bon le reste ne marche pas mieux... Pour info, la classe se nomme Singleton, le membre à initialiser m_instance et le type est T comme dans la déclaration ci-dessous:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
template <class T> class Singleton
{
    public:
    static T* getInstance();
    static void kill();
 
    protected:
    Singleton();
    ~Singleton();
    static T *m_instance;
};
Merci d'avance si vous pouvez m'aider (et que vous le faites ).