创建从基类继承的对象
Create object that inherits from base-class
也许这是一个初学者的问题,但我需要一些有关此问题的帮助。
假设有一个从B类继承的类A本身从类c。
继承现在,当A类构造函数看起来像这样时,一切都很好:
A::A(params)
:B(params)
{
}
接下来我尝试了此操作,但失败了:
A::A(params)
:C(params)
{
}
为什么我不能忽略这里B的继承 - 还是有一种方法可以使这一行为成为可能?定义A如下不起作用,这里编译器抱怨C已经是A:
的基类。class A : B, C
为什么我不能从这里忽略bentacne-或者有一种方法可以使它成为可能?
因为类只能决定如何构建其 Direct subobject。A
的直接子对象是B
,而B
的直接子对象为C
。B
对象也需要构造,您无法绕过它。
您遇到的错误,基本上是对此抱怨的。
定义A如下无效,这里编译器抱怨C是A:
class A : B,C
with:
class A : B, C
您实际上是在声明私有多重继承。而且,由于您说B
已经有一个subobject(来自)C
,因此编译器抱怨说,A
中从C
继承是没有用的。
但请记住,请始终指定private
/protected
/public
的继承,以免混淆。默认情况下,class
ES的继承为private
,struct
S为public
。因此,以上代码对应于:
class A : private B, private C
您应该写:
class C
{
public: C(ParamType param) { ... }
};
class B : public C
{
public: B(ParamType param) : C(param) { ... }
};
class A : public B
{
public: A(ParamType param) : B(param) { ... }
};
真的没有其他方法....
相关文章:
- 如何创建从同一类继承的不同对象的向量
- 如何在QT Creator上将QWidget声明为继承类的对象
- 如果'C'公开继承'B',B 私下继承'A',为什么我不能在"C"中创建"A"的对象?
- 私有字段对象与私有继承?
- 为什么我不能在主函数之外定义一个类的对象(它继承了另一个类)?
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 使用智能指针附加的继承对象的深层复制
- 如何继承返回对当前对象的引用的方法?
- C++具有空派生类对象的继承大小
- 防止在按值传递对象(继承)时进行切片
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 对象成员变量还是继承
- 继承 - 查找类的对象的大小
- 成员子对象继承存储持续时间是否有任何非直观的副作用
- 访问从 QObject 继承的对象继承的类的Q_Properties
- c++如何返回当前类类型的对象(继承)
- 在对象继承中构造对象后设置稍后的值
- c++ -从其他对象继承std::元组,并为其添加虚函数
- 我有一个基对象和派生类对象的向量,但我无法访问存储在向量中的派生对象继承的数据成员
- 从基础对象继承接口是一种好的做法吗