Heritage multiple et dynamic_cast
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 :
Code:
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();
}; |
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é)
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)
Code:
1 2 3
| a* obj = new c;
vecta.push_back(obj);
vectb.push_back(dynamic_cast<b*>(obj)); |
et ca plante,
pour info, voici comment sont définis les vecteurs :
Code:
1 2
| std::vector<a*> vecta;
std:vector<b*> vectb; |
je pense avoir fais comme dans la FAQ, mais ca plante.
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.