多继承的情况下的构造函数

时间:2015-10-01 12:33:53

标签: c++ inheritance constructor

这可能是一个愚蠢的问题,但我第一次处理多重继承问题。

定义了单继承,其工作方式如下:

class Canvas3D : public CanvasBase
{
...

这里Canvas3D继承自CanvasBase,因此必须在构造时以这种方式调用基础构造函数:

Canvas3D::Canvas3D(window* parent)
         :CanvasBase(parent)
{
...

现在Canvas3D需要从两个基类继承:

class Canvas3D : public CanvasBase, public GLCanvas
{
...

如果没有提供默认构造函数,如何调用GLCanvas的基础构造函数?这些变体不起作用:

Canvas3D::Canvas3D(window* parent)
         :CanvasBase(parent)
         ,GlCanvas(parent)
{
...

Canvas3D::Canvas3D(window* parent)
         :CanvasBase(parent)
         :GlCanvas(parent)
{
...

1 个答案:

答案 0 :(得分:2)

Canvas3D构造函数需要接受参数来构造GLCanvas部分并将它们传递给GLCanvas构造函数。

Canvas3D::Canvas3D(window* parent, GLCanvas_Parameters) : 
    CanvasBase(parent), GlCanvas(GLCanvas_Parameters)
{
    //...
}