Bonjour à tous,

il m'arrive un truc stupide, et je ne parviens pas à trouver l'erreur:
J'ai une classe B qui hérite de A. Une classe C qui possède une méthode f et une méthode g décrites ci-après:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class B: public A
{
[...]
};
 
class C
{
[...]
void f(A* a){};
void g(B* b){f(b);} //l'erreur est sur cette ligne
};
Je ne comprends pas: normalement, quand une classe hérite d'une autre, la conversion des pointeurs se fait automatiquement. Mais là ça ne marche pas, je reçois l'erreur:
error C2664: 'f' : cannot convert parameter 1 from 'const class B *' to 'const class A *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Précision: A et B appartiennent à des namespaces différents, mais je ne pense pas que cela pose problème.

Avez-vous une idée de la raison pour laquelle cela ne fonctionne pas?