繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM