Bonjour,
J'ai uen classe "c" qui hérite de "a" et de "b", et je voudrait utiliser le dynamic_cast comme expliqué ici : http://cpp.developpez.com/faq/cpp/?p...S_crosscasting
mais ca ne marche pas...
voici un exemple :
bon, jusque là, rien de special, j'ai une methode virtuel (action) dans le cas d'un objet de la classe c, en utilisant test() ca sera bien le action de la classe c (ca semble marcher, j'ai testé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class a { public : void test() {if(1) action();} virtual void action(); }; class b { public: void affiche(); }; //-- la classe c qui herite de a et b class c : public a, public b { public: void action(); };
et là, j'ai besoin de caster cet objet crée, pour le stocker dans deux vecteurs (qui contiennent des objets a et b par ailleur)
et ca plante,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 a* obj = new c; vecta.push_back(obj); vectb.push_back(dynamic_cast<b*>(obj));
pour info, voici comment sont définis les vecteurs :
je pense avoir fais comme dans la FAQ, mais ca plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::vector<a*> vecta; std:vector<b*> vectb;
note : je ne peux vraiment pas changer le type des vecteurs, car il y a plei n d'autres objets (heritant de a et b, mais pas les deux a la fois) qui y sont stocké dedans...
Merci.
Partager