Opérateur de conversion implicit + dérivation
Bonjour à tous,
J'ai une classe de ce style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
class A
{
public:
A(B* pB) : m_pB(pB){}
operator B*()
{
return m_pB;
}
private:
B* m_pB;
} |
Dont C dérive :
Code:
1 2 3 4 5
|
class C : public A
{
} |
Sauf que je n'arrive pas à convertir implicitement C en B :
Code:
1 2 3 4 5 6 7 8
|
C* pC = [...];
A* pA = pC; // Fonctionne
B* pB = pA; // Fonctionne (utilise la conversion implicite)
// Mais
C* pC = [...];
B* pB = pC; // Erreur : Impossible de convertir (error C2440) |
Est-ce que c'est normal ? Y-a-il un contournement autre que de faire une méthode "B* GetB()" dans A, à appeler sur C"
Code:
1 2 3
|
C* pC = [...];
B* pB = pC->GetB(); |
Merci beaucoup,
A bientôt