Sdílet prostřednictvím


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.