Chyba kompilátoru C2243
Převod typu převodu z typu 1 na typ2 existuje, ale je nepřístupný.
Ochrana přístupu (protected
nebo private
) zabránila převodu z ukazatele na odvozenou třídu na ukazatel na základní třídu.
Následující ukázka vygeneruje 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;
Základní třídy s protected
přístupem nejsou private
přístupné klientům odvozené třídy. Tyto úrovně řízení přístupu slouží k označení, že základní třída je podrobnosti implementace, která by měla být pro klienty neviditelná. Veřejné odvození použijte, pokud chcete, aby klienti odvozené třídy měli přístup k implicitní převodu ukazatele odvozené třídy na ukazatel na základní třídu.