编译器错误 C2243

存在从“类型 1”到“类型 2”的“转换类型”转换,但不可访问

访问保护(protectedprivate)已禁止从指向派生类的指针转换为指向基类的指针。

下面的示例生成 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;

派生类的客户端不能访问具有 protectedprivate 访问权限的基类。 这些级别的访问控制用于指示基类是对客户端不可见的实现细节。 如果你希望派生类的客户端有权访问派生类指针到基类指针的隐式转换,请使用公共派生。