虽然我创建了基类和派生类public
的成员,但为什么转换表明它无法访问?
class B
{
public:
int var;
};
class D: private B
{
public:
int var;
};
int main()
{
D d;
Base &b = d; //my error
}
答案 0 :(得分:1)
您无法将派生类转换为非公共基类(无论如何,在类本身之外)。私有继承通常用作组合形式,而不是替换,因此不需要转换为基础。在您的情况下,您似乎想要替换,因此您应该使用公共继承。
答案 1 :(得分:0)
试试这个:
#include <iostream>
class B
{
public:
int var;
};
class D: public B
{
public:
int var;
};
int main()
{
D d;
B &b = d; //my error
}
您尝试执行的操作不适用于私有继承。另请注意,您的基类称为B
,而不是Base
。
的问候,
丹尼斯M。