• Viernes 1 de Noviembre de 2024, 10:32

Autor Tema:  Singleton  (Leído 977 veces)

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Singleton
« en: Miércoles 14 de Noviembre de 2007, 01:00 »
0
buenas:

estoy intentando hacer un patron singleton pero me esta dando un fallo que no entiendo:


este es el singleton
Código: Text
  1.  
  2. //---------------------------- H
  3.  
  4. class KngEngine
  5. {
  6. protected:
  7. static  KngEngine *  Instance;
  8.     KngEngine();
  9.  
  10. public:
  11. static  KngEngine *  Get();    //singleton
  12.  
  13. };
  14.  
  15. //---------------------------- C
  16.  
  17. KngEngine * KngEngine::Get()
  18. {
  19.   if (KngEngine::Instance==NULL)
  20.     KngEngine::Instance=new KngEngine();
  21.  
  22.   return KngEngine::Instance;
  23. }
  24.  
  25. KngEngine::KngEngine()
  26. {
  27.  
  28. }
  29.  
  30.  
cuando compilo me dice:

KngEngine.obj : error LNK2001: unresolved external symbol "protected: static class KngEngine * KngEngine::Instance" (?Instance@KngEngine@@1PAV1@A)
Debug/KngEngine.exe : fatal error LNK1120: 1 unresolved externals

sin embargo es solo un miembro de la clase, deberia estar correctamente definida. No entiendo en que consiste el fallo, y lo peor es que buscando por google parece que lo he implementado bien, alguien ve que puede estar mal?

gracias por anticipado

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Singleton
« Respuesta #1 en: Miércoles 14 de Noviembre de 2007, 11:00 »
0
Es un error de enlazado, static significa que el miembro no pertence a ninguna instancia en particular y por lo tanto tenes que instanciarlo, viendo tu codigo deberias hacerlo asi:

Código: Text
  1.  
  2. KngEngine *KngEngine::Instance = 0;
  3.  
  4.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Singleton
« Respuesta #2 en: Miércoles 14 de Noviembre de 2007, 16:20 »
0
pues si, perfecto, era ese el fallo

muchas gracias.  :lol: