Salut,

J'ai un objet ObjA qui contient, entre autre, un tableau d'objets B. Je me demande comment, dans le constructeur ObjA(), je peux allouer dynamiquement le tableau d'objets ObjB en appelant leur constructeur paramétré ObjB(int value).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
class ObjA
{
int size;
ObjB *B;
};
 
 
ObjA::ObjA()
{
//initialisation des membres de A
size = 30;
B = new ObjB[size];
}
En faisant ça, j'imagine que c'est le constructeur par défaut de ObjB qui est appelé pour créer le tableau de 'size' élements.

Imaginons que la classe ObjB soit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
class ObjB
{
int v;
}
Moi j'aimerais bien, qu'en construisant l'objet A, l'objet B soit alloué dynamiquement et que le membre 'v' soit l'indice du tableau d'objets B de la classe A... en appelant le constructeur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ObjB::ObjB(int value)
{
v = value;
}
Je pourrais le faire en "deux coups" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
ObjA::ObjA()
{
size = 30;
B = new ObjB[size];
 
for (int i=0; i < size; i++)
     {
     B.set_value(i);
     }  
}
avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
ObjB::set_value(int value)
{
v = value;
}
mais je me demande s'il y a un moyen plus "élégant" qui m'évite d'écrire explicitement cette boucle et de définir cette fonction B::set_value().


J'espère avoir été clair.
Merci de votre aide
A bientot