简体   繁体   English

多继承情况下的构造函数

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

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