Programación General > C/C++

 Clases que llaman a otras clases

(1/4) > >>

rgpsolocodigo:
la quisiera saber si esto es posible y en ese caso como se haria:

Tengo dos clases, una server y la otra LD. Cada instancia de la clase server puede contener una o mas instancias de LD, la cantidad no es fija. Mi pregunta es como hacer esto? Podria luego desde mi programa principal hacer: instancia_de_server.instancia_de_LD.algun_atributo _de_LD ?? Sería como que la instancia LD dentro del server es luego utilizada en el main como si fuera un atributo mas del server.


Si alguien me puede dar una mano se lo agradezco

m0skit0:
Memoria dinámica con punteros a objetos, esto es:


--- Código: C ---LD *puntero_a_LD;[...]puntero_a_LD = new(LD) Así puedes construir una lista dinámica de punteros a objetos LD (o cualquier objeto)

emuller:
Hola. No recuerdo mucho de C++ pero ahí va:

Además de la solución de m0skit0, también puedes utilizar los vectores de la STL (http://www.cppreference.com/wiki/stl/vector/start) para la lista dinámica de clases LD. 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).

Además, para que tu programa principal pueda acceder a los objetos LD la clase server debe proveerle de algún mecanismo para que pueda acederlos. Hay varias formas, suponiendo que usas un vector:
1) Puedes hacer que el atributo de tipo Vector sea público. En la POO esto no se considera una buena forma de hacerlo.
2) Hacer que el Vector sea privado y colocar un método en la clase server que retorne un puntero a ese vector.
3) Hacer que el Vector sea privado y colocar métodos en la clase server que te permitan obtener los punteros a los objetos LD.
4) y varias más

Espero no haber dicho pavadas y te sirva.

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)

rgpsolocodigo:
m0squit0 ya me anduvo como me dijiste, la verdad de mucha ayuda, gracias.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa