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 : 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();
};
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 : 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));
et ca plante,
pour info, voici comment sont définis les vecteurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.