[C con Clase] sobre #

Juan jmicanovelles en gmail.com
Jue Oct 16 21:19:42 CEST 2008


Para el precompilador, esto te vale, pero tu clase solo servira para punteros o no punteros en ese programa, no ambas cosas a la vez.
Ejemplo:
  
#define borrar_en_destructor 0 
//0 o 1


template<typename DATA>

class claseX{

      DATA data;

      public:

      claseX(const DATA& x):data(x){}

      ~claseX(){
              #if borrar_en_destructor
                delete data;
               #endif
       }
} ;

Si implementas el codigo en tiempo de ejecución, solo te sirve para punteros:


template<typename DATA,const bool borrar_en_destructor=false>

class claseX{
      DATA data;
      public:
      claseX(const DATA& x):data(x){}
      ~claseX(){

              if (borrar_en_destructor==true)
                {
                  cout<<*data<<endl;
                  delete data;
                }
       }
} ;

Espero que te sirva.
Juan






El pasado 2008-10-16 14:24:26, Pedro Mateo escribió:
 
PM>  hola a todos
PM> tengo la siguiente plantilla
PM> template<typename DATA,const bool borrar_en_destructor=false>
PM> class claseX{
PM>       DATA data;
PM>       public:
PM>       claseX(const DATA& x):data(x){}
PM>       ~claseX(){
PM>               #if borrar_en_destructor==true
PM>                      delete data;
PM>               #endif
PM>        }
PM> }
PM> como DATA puede ser cualquier tipo, pero si es un puntero puede darse el
PM> caso de que yo desee que la clase le de un delete al puntero al ser
PM> destruida la instancia
PM> el codigo que he propuesto no funciona y me gustaria saber si estoy haciendo
PM> algo que no se puede o estoy haciendo algo mal
PM> gracias
PM> pedro
PM> _______________________________________________
PM> Lista de correo Cconclase Cconclase en listas.conclase.net
PM> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
PM> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase