[英]Constructors in case of multi-inheritance
this may be a stupid question but I'm dealingthe first time with multi-inheritance.这可能是一个愚蠢的问题,但我第一次处理多重继承。
Single-inheritance is defined and works like this:单继承的定义和工作方式如下:
class Canvas3D : public CanvasBase
{
...
Here Canvas3D inherits from CanvasBase and therefore the base-constructor has to be called this way on construction:这里 Canvas3D 继承自 CanvasBase,因此在构造时必须以这种方式调用基构造函数:
Canvas3D::Canvas3D(window* parent)
:CanvasBase(parent)
{
...
Now Canvas3D needs to inherit from two base classes:现在 Canvas3D 需要继承两个基类:
class Canvas3D : public CanvasBase, public GLCanvas
{
...
How do I call the base-constructor of GLCanvas when it does not provide a default constructor?当 GLCanvas 不提供默认构造函数时,如何调用它的基构造函数? These variants do not work:这些变体不起作用:
Canvas3D::Canvas3D(window* parent)
:CanvasBase(parent)
,GlCanvas(parent)
{
...
Canvas3D::Canvas3D(window* parent)
:CanvasBase(parent)
:GlCanvas(parent)
{
...
The Canvas3D
constructor needs to take in the parameters to construct the GLCanvas
part and pass them to the GLCanvas
constructor. Canvas3D
构造函数需要传入参数来构造GLCanvas
部分,并将它们传递给GLCanvas
构造函数。
Canvas3D::Canvas3D(window* parent, GLCanvas_Parameters) :
CanvasBase(parent), GlCanvas(GLCanvas_Parameters)
{
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.