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.