[C con Clase] Otra duda

Miguel Alejandro Jimenez Ramirez cerberbero en gmail.com
Jue Mar 13 11:27:22 CET 2014


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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140313/5e6a11ab/attachment.html>


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