We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.

Pmlkratos • 2 months ago

Yo quiero hacer esto pero que en la clase contenedora tenga un arreglo de la clase contenida y vaya agregando objetos al arreglo mediante un metodo y despues que muestre el contenido de la misma en otro metodo y en el main solo hacer las llamadas correspondientes.
Por ejemplo:
class Persona
{
string nombre;
int edad;
//constructor...
// setter getter
// to string()
}

class Cliente
{
Persona personas[];
Cliente(int cantidad)
{
personas = new Persona[cantidad];
}

void agregarPersona(Persona p)
{
for(int i = 0; i < personas.length; i++)
{
if(personas[i] == null)
{
personas[i] = p;
break;
}
}
}

string ListarPersona()
{
string listado = ";
for(int i = 0; i < personas.length; i++)
{
if(personas[i] != null)
{
Persona p = personas[i];
listado += p.toString();
}
}
return listado;
}

}

class Pincipal
{
Cliente c = new Cliente(2);

Persona p1 = new Persona("A", 20);
Persona p2 = new Persona("B", 30);

c.agregarPersona(p1);
c.agregarPersona(p2);

console.whriteLine( c.listarPersona());
}

quiero hacer esto pero en C++

camilocorreaUdeA • 2 months ago

Hola, bueno, la traducción de ese código en Java a C++ sería algo similar a esto:

class Persona
{
std::string nombre;
int edad;
//constructor...
// setter getter
// to string()
};

class Cliente
{
Persona* personas = nullptr;
int size = 0;

Cliente(int cantidad)
{
personas = new Persona[cantidad];
size = cantidad;
}

~Cliente(){delete[] personas;}

void agregarPersona(Persona* p)
{
for(int i = 0; i < size; i++)
{
if(personas[i] == nullptr)
{
personas[i] = p;
break;
}
}
}

std::string ListarPersona()
{
std::string listado = "";
Persona* p = nullptr;

for(int i = 0; i < size; i++)
{
if(personas[i] != nullptr)
{
p = personas[i];
listado += p->toString(); //supongo que ese metodo retorna la variable nombre de la clase Persona
listado += " ";
}
}
delete p;
p = nullptr;
return listado;
}

};

int main()
{
Cliente c = new Cliente(2);

Persona* p1 = new Persona("A", 20);
Persona* p2 = new Persona("B", 30);

c->agregarPersona(p1);
c->agregarPersona(p2);

std::cout<<c->listarPersona()<<std::endl; delete="" c;="" c="nullptr;" delete="" p1;="" p1="nullptr;" delete="" p2;="" p2="nullptr;" }="">

Pmlkratos • 2 months ago

muchas gracias