错误:从派生*转换为基数&

时间:2011-04-01 19:02:32

标签: c++ inheritance

虽然我创建了基类和派生类public的成员,但为什么转换表明它无法访问?

class B 
{
public:
   int var;
};


class D: private B
{
public:
   int var;
};


int main()
{
   D d;
   Base &b = d; //my error
}

2 个答案:

答案 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。