Programación General > C/C++
Clases que llaman a otras clases
emuller:
--- Cita de: "m0skit0" ---
--- Cita de: "emuller" ---La clase server debe tener un atributo de tipo Vector, y dentro de ese vector almacenas, por ejemplo, punteros a objetos LD (recuerda hacer delete al puntero de un objeto LD si vas a borrarlo del Vector, ya que aunque borres el puntero el objeto sigue existiendo y ocupa memoria).
--- Fin de la cita ---
Efectivamente, pero te olvidas de que de esta forma también defines un máximo de elementos de forma estática que no puedes modificar a menos que recompiles el programa. Y también que tu método es más rápido que el mío, pero presenta el inconveniente anteriormente mencionado. ¡No se puede tener todo, amigos! B)
--- Fin de la cita ---
No se si se entendió bien lo que dije, con vector me refería a la clase "vector" de la STL al que parece, según la documentación en el enlace que coloqué, se lo puede redimensionar. De todas formas sólo lo usé un par de veces de manera muy simple y hace bastante tiempo ya, así que es muy probable que me haya equivocado en la idea.
Gracias por la acotación, siempre se aprende algo nuevo !! :)
m0skit0:
--- Cita de: "emuller" ---con vector me refería a la clase "vector" de la STL al que parece
--- Fin de la cita ---
Ah, disculpa la confusión. Pero yo siempre defiendo el HTM (Hazlo Tú Mismo), creo que se aprende más y además se tiene más control sobre qué se está haciendo realmente. Aunque tampoco hay que reinventar la rueda :)
Salud
emuller:
--- Cita de: "m0skit0" ---... yo siempre defiendo el HTM (Hazlo Tú Mismo), creo que se aprende más y además se tiene más control sobre qué se está haciendo realmente...
--- Fin de la cita ---
Estoy de acuerdo. Para aprender las bases del lenguaje prefiero hacerlo yo mismo. :comp:
rgpsolocodigo:
Pense que lo habia hecho como me dijiste pero en realidad no, esto hice:
#include "iostream.h"
class LD{
public:
int a;
LD(){cout << "LD creado" << endl;};
~LD(){cout << "LD destruido." << endl;};
};
class Server {
public:
LD *pLD;
Server();
~Server();
void cambioa(int b);
};
Server::Server() {cout << "Server creado" << endl;}
Server::~Server() {cout << "Server destruido." << endl;}
void Server::cambioa(int b)
{
int c;
c=b;
pLD= new LD[c];
pLD[c-1].a=4;
}
int main () {
Server server;
server.cambioa(3);
cout << server.pLD[2].a << endl;
return 1;
}
Pero de esta forma el parametro b me fija la cantidad de LD, para hacerlo mas dinamico seria como vos decis pero no me sale. En ese caso, como haria para saber cual es el ultimo LD creado? o sea a partir del puntero como lo referencio??
gracias
rgpsolocodigo:
Solucionado!
Cree el puntero en la clase server, asi el puntero se crea una vez y no se toca mas, sino cada vez que llamaba al metodo el puntero cambiaba, lo que si mosquito en la declaracion tengo dos opciones que funcionan:
pLD= new LD; y pLD= new LD[];
Es lo mismo o me conviene utilizar alguna de las 2??
gracias.
Asi quedo el codigo:
#include "iostream.h"
class LD{
public:
int a;
LD(){cout << "LD creado" << endl;};
~LD(){cout << "LD destruido." << endl;};
};
class Server {
public:
LD *pLD;
Server();
~Server();
void cambioa(int b);
};
Server::Server()
{
cout << "Server creado" << endl;
pLD= new LD;
}
Server::~Server() {cout << "Server destruido." << endl;}
void Server::cambioa(int b)
{
int c;
c=b;
pLD[c].a=c;
}
int main () {
Server server;
server.cambioa(0);
server.cambioa(1);
cout << server.pLD[0].a << endl;
cout << server.pLD[1].a << endl;
return 1;
}
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa