Share via


Erreur du compilateur C2243

La conversion 'type de conversion' de 'type1' en 'type2' existe, mais n'est pas accessible

La protection d'accès (protected ou private) a empêché la conversion d'un pointeur vers une classe dérivée en pointeur vers la classe de base.

L'exemple suivant génère l'erreur C2243 :

// C2243.cpp
// compile with: /c
class B {};
class D : private B {};
class E : public B {};

D d;
B *p = &d;   // C2243

E e;
B *p2 = &e;

Les classes de base avec un accès protected ou private ne sont pas accessibles aux clients de la classe dérivée. Ces niveaux de contrôle d'accès permettent d'indiquer que la classe de base est un détail d'implémentation qui doit être invisible pour les clients. Utilisez une dérivation publique si vous souhaitez que les clients de la classe dérivée aient accès à une conversion implicite d'un pointeur de la classe dérivée en pointeur vers la classe de base.