Bonjour à tous
J'ai à ma disposition un ensemble de classe polymorphiques
où T_A et T_B sont des types (peu importe)
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 ... };
Actuellement je peux écrire
Si je rajoute la ligne suivante
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
ça va fonctionner mais je vais écraser data_A1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 T_A data_A2 b.setData(data_A2);
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:
ca devrait fonctionner mais ca ne satisfait pas à ma contrainte...:-/
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); ... };
2ème solution:
création d'une classe "regroupement"
ça devrait aussi fonctionner mais là par contre je ne vois du tout comment écrire un objet de type B tel que:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class X{ A a1_; A a2_; };
* 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
Partager