Bonjour à tous

J'ai à ma disposition un ensemble de classe polymorphiques

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class A: public M{
virtual T_A data_A_
void setData (T_A)
...
};
 
class B:public A{
T_B data_B_
B(T_B) // constructeur
...
};
où T_A et T_B sont des types (peu importe)

Actuellement je peux écrire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
T_B data_B;
B b(data_B);  // je construis mon objet B dérivé de A
T_A data_A1;
b.setData(data_A1); // j'assigne data_A1 dans la structure mère A
Si je rajoute la ligne suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
T_A data_A2
b.setData(data_A2);
ça va fonctionner mais je vais écraser data_A1
Ca ne m'arrange (évidemment) pas !!!

Ce que je voudrais faire, c'est initialiser mon objet B avec ses données membres (de type data_B), mais pouvoir avoir deux sets de données data_A (donc sans écrasement de data_A1)


Les contraintes que j'ai sont:
Je ne peux pas toucher au code de A et B pcq ce n'est pas developpé par moi et je suis dépendant des éventuels releases futures


Voici donc les solutions que j'ai trouvé jusqu'à présent:
1ère solution:
modif de la classe A:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class A: public M{
T_A data_A1_;
T_A data_A2_;
void setData1(T_A);
void setData2(T_A);
...
};
ca devrait fonctionner mais ca ne satisfait pas à ma contrainte...:-/

2ème solution:
création d'une classe "regroupement"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
class X{
A a1_;
A a2_;
};
ça devrait aussi fonctionner mais là par contre je ne vois du tout comment écrire un objet de type B tel que:
* les données de type data_B passe dans la structure B
* je puisse passer faire varier les variables de type T_A

3ème solution:
la votre :-)

David