是否有可能摆脱错误 C2243?
class B {};
class D : protected B {};
D d;
B *p = &d; // conversion from 'D *' to 'B &' exists, but is inaccessible
我在我的应用程序中遇到了这个错误,最后我设法通过进行显式转换来编译它:
D d;
B *p = (B*)&d;
我不明白为什么通过从 B 继承受保护的类 D 会使隐式转换无法访问。
我试图通过在 D 类中创建运算符 B() 来避免显式转换,以使转换可访问:
class B {};
class D : protected B
{
public:
operator B() {return *this;}
};
但是没有办法。
还有其他避免显式转换的解决方案吗?