Código
#include <iostream> using namespace std; class persona { private: string nom; string id; public: persona(){ nom=""; id=""; } persona(string n, string i) : nom(n), id(i) {} persona(const persona &p) : nom(p.nom), id(p.id) {} // Este copia sirve para objetos en stack persona(const persona *p) : nom(p->nom), id(p->id) {} // Este copia sirve para objetos en heap string getNom() { return nom; } string getId(){ return id; } void setNom(string n){ nom = n; } void setId(string i){ id = i; } }; class coleccion{ private: persona *p[10]; int cantidad; public: coleccion() { cantidad=0; } void ingresarPersona(persona *pe) { if(cantidad<10) { p[cantidad]=pe; cantidad++; } } persona* devuelve(int i) { return p[i]; } ~coleccion() { for(int i=0; i<cantidad; i++){ delete p[i]; } } }; int main() { coleccion *c = new coleccion; persona *p1 = new persona("JUAN","12345"); persona *p2 = new persona("PEDRO","45678"); c->ingresarPersona(p1); c->ingresarPersona(p2); for(int i=0; i<2; ++i) cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n"; cout<<endl; persona *p3; p3 = new persona(c->devuelve(0)); c->ingresarPersona(p3); for(int i=0; i<3; ++i) cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n"; cout<<endl; c->devuelve(2)->setNom("CAMBIO"); for(int i=0; i<3; ++i) cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n"; cout<<endl; }