[C con Clase] Otra duda

Miguel Alejandro Jimenez Ramirez cerberbero en gmail.com
Jue Mar 13 12:56:21 CET 2014


Volviendo a esta funcion:

 void Bibliotheque::stocker(Oeuvre & test, int n=1 )  {
       while (n >=1){
      list.push_back(new Exemplaire(test));
      cout<<"PRUEBA"<<endl;
       n--;
      }


La verdad no se como liberar estos espacios de memoria , es verdad que lo
ideal seria liberarlos en la misma funcion stocker(); , pero no puedo , ya
que despues voy a utilizar el vector en otras funciones ,

Entoces en la clase Bibliotheque , cree un destructor que seria algo como
esto:

Bibliotheque::~Bibliotheque(){

       for(unsigned int p=0;p<list.size();p++)
        list.push_back(delete );

                       }

pero no funciona el compilador me retorna un error :

expected primary-expression before ')' token

es un error de sintaxis , pero no sabria como borrar la lista de
apuntadores , en este destructor , sera que me podrian ayudar un poco en
esta parte ?
Gracias


2014-03-13 11:27 GMT+01:00 Miguel Alejandro Jimenez Ramirez <
cerberbero en gmail.com>:

> Bueno finalmente hice algo como esto en la funcion para leer los datos:
>
> for(auto &p : list){
> p->ver();
>                        }
>
> y me funciono muy bien , pero comopodria recorrer un vector de apuntadores
> sin necesidad de utilizar el auto? ,
> ademas no entiendo muy bien el funcionamiento de este ciclo , que do a la
> espera de sus comentrios y sobre todo tambien para mi pregunta de los type
> def<array<array,3...
>
>
> 2014-03-13 10:21 GMT+01:00 Miguel Alejandro Jimenez Ramirez <
> cerberbero en gmail.com>:
>
> De paso aprovecho y pregunto algo , si yo tengo el siguiente codigo
>>
>> class A{
>> public:
>> string getA() const {return a;}
>> void ver(){cout<<"la palabra es : "<<getA()<endl;}
>>
>> private:
>> string a;
>> };
>>
>>
>> class B{
>>
>> public:
>>
>> void almacenar(A test,int n){
>> while(n=!1){
>> A *test=new A;
>> v.push_back(*list);*
>> delete test;
>>                  }
>> void imprimir(){
>> // acceder al metodo ver de la clase A
>> for(int p=1; p=list.size;p++){
>> list[p]->ver();
>>                                          }
>> }
>> private:
>> vector<A*> list;
>> }
>> *********************************************
>> Bueno mi pregunta es sobre el acceso al metodo ver de la clase A , ya que
>> list es in vector de apuntadores y no he logrado acceder , no se como hacer
>> la sintaxis , podrian colaborarme con esta parte? , gracias quedo atento a
>> todos sus comentarios
>>
>>
>>
>>
>> 2014-03-13 9:19 GMT+01:00 Miguel Alejandro Jimenez Ramirez <
>> cerberbero en gmail.com>:
>>
>> 1.Finalmente lo que creo que deberia hacer es crar un destructor en donde
>>> se libera la memoria con un dlete de todos los miembros del vector.
>>>  2. Como segunda pregunta teng un pedazo de codigo que no entiendo muy
>>> bien ya que se utiliza la palabra reservada auto , la busque en el curso de
>>> la pagina de conclase.net pero la verdad creoq ue la definicon es muy
>>> poca para lo que se esta haciendo en este codigo , podrias explicarme como
>>> funciona el uso de esta palabra en el siguiente fragmento de codigo:
>>>
>>> Enum ColorCsilla{VACIO, CIRCULO,CRUZ};
>>> typedef < array<array<ColorCasilla , 3> , 3> Celda ;
>>>
>>> class juego{
>>>
>>> public:
>>>
>>> void inisalizar(){
>>>
>>> for (auto& linea :celda){
>>>
>>> for(auto& kase : celda){
>>>
>>> kase = VACIO;
>>> }
>>> }
>>> }
>>> private:
>>> Celda celda;
>>> }
>>>
>>>
>>> El tipo enum , lo entiendo bien , paro la parte del typedef es un poco
>>> confusa ,en que capitulo del curso podria conseguir informacion sobre este
>>> tipo de usos del typedrf.
>>>
>>> Gracias quedo pendiente.
>>>
>>>
>>> 2014-03-12 22:25 GMT+01:00 Salvador Pozo <salvador en conclase.net>:
>>>
>>> El pasado 2014-03-12 20:55:39, Miguel Alejandro jimenez escribió:
>>>>
>>>> MAj> Pues se me ha generado otra duda pero es sobre vectores , teniendo
>>>> la
>>>> MAj> siguiente definicion de una funcion :
>>>> MAj> void Bibliotheque::stocker(Oeuvre & test, int n=1 )  {
>>>> MAj>        while (n >=1){
>>>> MAj>       list.push_back(new Exemplaire(test));
>>>> MAj>       cout<<"PRUEBA"<<endl;
>>>> MAj>       n--;
>>>> MAj>       }
>>>> MAj> }
>>>> MAj> En esta funcion no se como liberar los espacios de memoria , es
>>>> decir como
>>>> MAj> utilizo la palabra reservada delete , para liberar la memoria , o
>>>> MAj> sencillamente en este caso no es necesario , por que va rellenando
>>>> el
>>>> MAj> vector con los parametros dados?
>>>>
>>>> Hola:
>>>>
>>>> Entiendo que la memoria que quieres liberar es la apuntada por test.
>>>>
>>>> Yo soy partidario de que, salvo que el problema obligue a actuar de
>>>> otro modo, la memoria se libere en el mismo nivel que se obtiene.
>>>>
>>>> Es decir, si la memoria para test se obtiene en el nivel en que se
>>>> invoca al método "stocker", se libere en ese mismo nivel. O sea, cuando se
>>>> retorne de la función.
>>>>
>>>> A la hora de depurar o analizar un programa, es más sencillo si las
>>>> reservas y liberaciones de memoria se hacen en la misma función.
>>>>
>>>> En este caso sí es necesario liberar la memoria asignada a test, ya que
>>>> en el vector almacenas una copia de test, no el propio test. Bueno, al
>>>> menos creo que deberías almacenar una copia. Si "new Exemplaire(test)" no
>>>> crea una copia de test, podrías tener algunos problemas de incongruencia.
>>>>
>>>> Por ejemplo, si haces uso de test después del retorno, o si la liberas,
>>>> o si se libera automáticamente, el contenido del vector podría modificarse
>>>> o corromperse sin una causa evidente.
>>>>
>>>> Desconozco el mecaniemo exacto de este procedimiento, así que no estoy
>>>> muy seguro de esto.
>>>>
>>>> Hasta pronto.
>>>>
>>>> --
>>>> Salvador Pozo (Administrador)
>>>> mailto:salvador en conclase.net
>>>> Blog con Clase: http://blogconclase.wordpress.com
>>>> Con Clase: http://conclase.net
>>>> _______________________________________________
>>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>>>
>>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>>
>>>
>>>
>>>
>>> --
>>> MIGUEL ALEJANDRO JIMENEZ R.
>>>
>>
>>
>>
>> --
>> MIGUEL ALEJANDRO JIMENEZ R.
>>
>
>
>
> --
> MIGUEL ALEJANDRO JIMENEZ R.
>



-- 
MIGUEL ALEJANDRO JIMENEZ R.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140313/d01d6b2b/attachment.html>


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