Salut,
J'ai une petite question. Ça fait longtemps que j'ai fait du c++ et j'ai oublié comment on fait (si c'est possible) pour déclarer une fonction static dans le header et la définir dans le cpp d'implémentation. En fait, j'aimerais faire une classe singleton et j'ai abouti avec le code suivant :
header:
cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Yo { private: Yo(); public: static Yo* getInstance(); private: static Yo* instance; };
Le problème est que ce bout de code ne compile pas. J'ai une erreur de linkage, en fait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Yo* Yo::getInstance() { if (instance == NULL) instance = new Yo; return instance; }
Pour ce que j'en comprend, la function instance ne semble pas être reconnue. Je supposes que le problème est que la méthode getInstance est static. Donc, je réitère ma question : Comment on fait (si c'est possible) pour déclarer une fonction static dans le header (le prototype) et la définir (le corps de la fonction) dans le cpp d'implémentation ?Error 1 error LNK2001: unresolved external symbol "public: static class Yo * __cdecl Yo::getInstance(void)" (?getInstance@Yo@@SAPAV1@XZ)
Merci
Partager