Regroupement de classe polymorphiques
Bonjour à tous
J'ai à ma disposition un ensemble de classe polymorphiques
Code:
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:
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:
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:
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:
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