Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Crear un array de objetos

Estas en el tema de Crear un array de objetos en el foro de C/C++ en Foros del Web. Hola, tengo problemas para definir un array de objetos. Me explico: Tengo una clase Persona, con atributos nombre, sexo y edad. Tengo otra clase ControlPersonas ...
  #1 (permalink)  
Antiguo 29/10/2012, 04:16
 
Fecha de Ingreso: julio-2010
Mensajes: 216
Antigüedad: 14 años, 5 meses
Puntos: 0
Crear un array de objetos

Hola, tengo problemas para definir un array de objetos.

Me explico:

Tengo una clase Persona, con atributos nombre, sexo y edad.

Tengo otra clase ControlPersonas en el que como atributo de esa clase quiero tener un array de Personas. Quieor utilizar la clase especial vector.

Y lo pongo asi:


Persona.hpp
class Persona
{
private:
tipo_nombre nombre;
tipo_sexo sexo;
int edad;

...
...
}





ControlPersonas.hpp
calss ControlPersonas
{
private:
vector Persona * listPersonas;
....
....
....
}



ControlPersonas.cpp

#include "ControlPersonas.hpp"

Aquí en las funciones hago:
listPersonas[i] = new Persona();

Y el error que da es:
`lisPersonas' undeclared (first use this function)


Puede ser el tema de los private? O que en el cpp último, no pongo uses from calss Persona? nose
  #2 (permalink)  
Antiguo 29/10/2012, 12:35
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Crear un array de objetos

Asumiendo que has finalizado todas las declaraciones de clase con ; y que no tienes ningun tipo 'calss' en vez de 'class' y que le indicas que vas a usar un tipo nuevo de c++ de la biblioteca stl y que incluyes la cabecera de vectores, la sintaxi de tu codigo no es la correcta. Ten en cuenta que c++ está montado sobre c: mucha de la sintaxi es la misma, pero c++ tiene tipos nuevos con sintaxi nueva. En tu codigo estas intentando crear una lista de tipos vector de c++ como si estuvieras haciendo una lista de estructuras en c. La forma correcta es la siguiente

Código:
#include <vector>
using namespace std;

//clase persona
class Persona {
    ...datos...
};


//clase control personas
class ControlPersonas {
    private:
        vector <Persona *> listaPersonas;
};

//añadiendo un item al vector
Persona *np = new Persona();
listaPersonas.push_back(np);
Recuerda que tienes que liberar la memoria usada para las clases Persona cuando ya no las necesites: tienes que hacer un delete para cada puntero a la clase, porque simplemente vaciando el vector estarías provocando un memory leak

Saludos
vosk

Etiquetas: funcion, int, objetos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.