[英]Error: Conversion from derived* to base&
虽然我做了这两个基地的成员和派生类public
,为什么转换说,这是无法访问?
class B
{
public:
int var;
};
class D: private B
{
public:
int var;
};
int main()
{
D d;
Base &b = d; //my error
}
您不能从派生类转换为非公共基类(无论如何,在类本身之外)。 私有继承通常用作组合形式,而不是替代形式,因此无需转换为基数。 在您的情况下,您似乎要替换,因此您应该使用公共继承。
尝试这个:
#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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.