inicializacion de objetos dentro de un objeto

fert_82
18 de Abril del 2005
Hola: tengo el problema de q no se como inicializar objetos dentro de objetos; porque todos los objetos tienen constructores q tienen parametros.
class cA
{
cA(char *nombre,int i );
.....
}

class cB
{
cB(int j,short t);
...
}
class c
{
cA a;
cB b;
}

No se como inicializar los objetos a y b cuando creo e inicializo c.
Agradeceria cualquier ayuda.

Alejandro_
18 de Abril del 2005
Para inicializar objetos de tipo cA y cB en c, como cualquier otro miembre de c, debes usar su constructor.

Alejandro

fert_82
18 de Abril del 2005
muchas gracias por sus respuestas me fueron muy utiles

fert_82
18 de Abril del 2005
muchas gracias por sus contestaciones me fuern muy utiles

chuidiang
18 de Abril del 2005
Hola:

Tienes dos opciones.

Una es declarar como punteros cA *a y cB *b. Luego en el constructor de c haces los news y en el destructor los delete.

Otra opcion es usar una sintaxis extraña pero correcta. Haces el constructor de c de esta manera

c::c () : a("cadena"): b (22)
{
// codigo del constructor de c
}

No te puedo asegurar si el separador entre a y b es : u otra coas. Tendrás que probar.

En http://arco.inf-cr.uclm.es/~dvilla/pensar_en_C++/ch08s04.html puedes ver un ejemplo de esto, en el apartado de " La lista de inicialización del constructor"

Se bueno.

chuidiang
18 de Abril del 2005
Hola de nuevo:

He buscado un poco más en internet y en http://geneura.ugr.es/~jmerelo/c++-avanzado.htm tienes un ejemplo en el que inicializa dos atributos. En tu caso quedaría

c:c() : a("cadena") , b(22)
{
...
}

El separador es una , no un : como te puse antes

Se bueno.