Udostępnij przez


Błąd kompilatora C2243

Konwersja "typ konwersji" z "type1" na "type2" istnieje, ale jest niedostępna

Uwagi

Ochrona dostępu (protected lub private) uniemożliwiła konwersję ze wskaźnika do klasy pochodnej do wskaźnika do wskaźnika do klasy bazowej.

Example

Poniższy przykład generuje 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;

Klasy bazowe z dostępem protected lub private nie są dostępne dla klientów klasy pochodnej. Te poziomy kontroli dostępu służą do wskazywania, że klasa podstawowa jest szczegółem implementacji, który powinien być niewidoczny dla klientów. Użyj wyprowadzania publicznego, jeśli chcesz, aby klienci klasy pochodnej mieli dostęp do niejawnej konwersji wskaźnika klasy pochodnej na wskaźnik do klasy bazowej.