Quiero crear una clase parametrizada para aplicar el patron singleton en
C++.
Compila pero no me funciona correctamente, puntualmente tira segmentation
fault. Estoy seguro que estoy cometiendo algun error (sino varios) en la
forma de utilizarla pero no se cual :)

Hice lo siguiente:

-------------------------------------------------------
Template<class Target>
class Singleton
{

protected:
   //REFERENCIA ESTATICA
   static Target* target;

   Singleton();

public:

   virtual ~Singleton();

   static Target* get_instance();

   static void delete_instance();

};

template <class Target>
Target* Singleton<Target>::target = NULL;


template <class Target>
Singleton<Target>::Singleton()
{
}


template <class Target>
Singleton<Target>::~Singleton()
{
}


template <class Target>
Target* Singleton<Target>::get_instance(){

   if(!target)
       target = new Target();

   return target;
}


template <class Target>
void Singleton<Target>::delete_instance(){

   if(target)
       delete target;

   target = NULL;
}

---------------------------------------------------

Y la uso mas o menos de la siguiente forma:

class Campo: public Singleton<Campo> {
public:
        set_tamanio(int x); -> método de ejemplo
private:

      Campo(); //CONSTRUCTOR
      friend class Singleton<Campo>;

}

Cuando hago:

Campo* miCampo = Campo::get_instance();
miCampo->set_tamanio(5);   ----> ACA PINCHA y miCampo no es NULL!

Toda idea es bienvenida!

Un saludo
Sebastian
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a