Compartilhar via


Erro do compilador C2243

A conversão 'conversion type' de 'type1' para 'type2' existe, mas é inacessível

A proteção de acesso (protected ou private) impediu que um ponteiro para uma classe derivada fosse convertido para um ponteiro para a classe base.

O seguinte exemplo gera o erro 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;

Classes base com acesso protected ou private não são acessíveis por clientes da classe derivada. Esses níveis de controle de acesso são usados para indicar que a classe base é um detalhe de implementação que deve ser invisível para os clientes. Use a derivação pública se quiser que os clientes da classe derivada tenham acesso à conversão implícita de um ponteiro para classe derivada para um ponteiro para a classe base.