Bonjour à tous,
J'ai une classe de ce style :
Dont C dérive :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Sauf que je n'arrive pas à convertir implicitement C en B :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class C : public A { }
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 C* pC = [...]; B* pB = pC->GetB();
Merci beaucoup,
A bientôt
Partager