这可能是一个愚蠢的问题,但我第一次处理多重继承问题。
定义了单继承,其工作方式如下:
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)
{
...
答案 0 :(得分:2)
Canvas3D
构造函数需要接受参数来构造GLCanvas
部分并将它们传递给GLCanvas
构造函数。
Canvas3D::Canvas3D(window* parent, GLCanvas_Parameters) :
CanvasBase(parent), GlCanvas(GLCanvas_Parameters)
{
//...
}