salut,
je cherche à définir une classe CConsole, héritée d'une classe template CSingleton, et utilisée alors dans une classe CTest mais j'obtiens une erreur au linkage :
voici le code du fichier console.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part test.obj : error LNK2001: unresolved external symbol "private: __thiscall CConsole::CConsole(void)"
le code de singleton.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #ifndef CONSOLE_H #define CONSOLE_H #include "singleton.h" class CConsole : public CSingleton<CConsole> { friend class CSingleton<CConsole>; public: protected: private: CConsole(void); ~CConsole(void); }; #endif
et le code pour tester :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef SINGLETON_H #define SINGLETON_H template <class T> class CSingleton { public: static T *get(void); protected: private: CSingleton(void); ~CSingleton(void); static T *m_pInst; }; template <class T> T *CSingleton<T>::m_pInst=NULL; template <class T> T *CSingleton<T>::get(void) { if(m_pInst == NULL) { m_pInst=new T(); } return m_pInst; } #endif
j'ai trouvé que ça marchait si :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #include "console.h" [...] CConsole *pConsole=CConsole::get();
- je ne fais pas d'objet CConsole dans CTest, mais bon y a aucun intérêt puisque c'est mon objectif,
- et si je commente la ligne "CSingleton(void);" dans singleton.h
je ne comprends pas pourquoi et ça ne me semble pas être correct donc je viens ici vous demander de l'aide.
je précise que le test est effectué dans un projet de dll, si ça a son importance dans cette erreur.
par avance, merci
Partager