[C con Clase] vector<MiClase*> y clear()

Steven Davidson srd4121 en njit.edu
Lun Jun 7 19:33:00 CEST 2010


Hola David,

Ya te han contestado, pero quiero agregar a lo dicho.

Puedes usar la clase-plantilla 'auto_ptr' precisamente para resolver 
este tipo de problemas. Básicamente, se generará una clase para 
representar un puntero y sus operaciones. Reescribiríamos tu ejemplo así:

class MiClase  {...};

class MiClase2
{
public:
   vector< auto_ptr<const MiClase> > v;
   ~MiClase2()
   {
     this->v.clear();
   }
};

int main()
{
   MiClase2 m2;

   for( int i = 0; i < 1000; i++ )
   {
     m2.v.push_back( auto_ptr<const MiClase>( new MiClase ) );
   }

   v.clear();

   return 0;  // Te falta esta sentencia
}

La clase-plantilla 'auto_ptr' liberará en su destructor la memoria 
apuntada por el puntero que le diste previamente.


Espero que esto te sirva.

Steven





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