Fonction singleton déclarer dans header et définie dans le cpp
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:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
class Yo
{
private:
Yo();
public:
static Yo* getInstance();
private:
static Yo* instance;
}; |
cpp
Code:
1 2 3 4 5 6 7 8
|
Yo* Yo::getInstance()
{
if (instance == NULL)
instance = new Yo;
return instance;
} |
Le problème est que ce bout de code ne compile pas. J'ai une erreur de linkage, en fait.
Citation:
Error 1 error LNK2001: unresolved external symbol "public: static class Yo * __cdecl Yo::getInstance(void)" (?getInstance@Yo@@SAPAV1@XZ)
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 ?
Merci