Salut à tous!!!!!

Voila donc mon problème: j'ai deux classes B et C qui héritent de la classe A.
J'ai besoin à l'interieur de méthodes de B et C de tester le type d'un A* de cette manière : a1->memeType(a2) (renvoie un bool). Le type de a2 peut être connu puisque l'on se trouve dans la classe B ou C, le type de a1 est inconnu et donc considéré par defaut comme A (d'où l'utilisation de virtual)


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
class A {
     public:
          virtual bool memeType(const A* a) const = 0;
}
 
class B : public A {
     public:
          bool memeType(const A* a) {return false;}
          bool memeType(const B* b) {return true;}
}
 
class C : public A {
     public:
          bool memeType(const A* a) {return false;}
          bool memeType(const C* c) {return true;}
}
Comme on peut le voir, dans la classe mère A il n'y a que l'objet (this) pour lequel on arrive à differencier le type. Le 2eme paramètre est déclaré en A* alors que l'on veut déceler si en réalité c'est un A*, B* ou C* (sans mentioner B et C dans la classe A ....

Dans notre cas, la méthode appellée est toujours :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
bool B::memeType(const A* a) {return false;}
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
bool C::memeType(const A* a) {return false;}

L'idéal serait d'avoir ce paramètre en virtual également ... est ce possible ?
Sinon, existe-t-il une autre solution ?

Important (rappel) ! Je ne peux pas ajouter les prototypes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
bool A::memeType(const B* b) {return true;}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
bool A::memeType(const C* c) {return true;}
Merci d'avance!!!