C ++:错误:不允许间接非虚基类

时间:2014-11-20 14:18:43

标签: c++ inheritance

我正在尝试在c ++和OpenGL中创建某种基本UI。有了这个,我使用了一个名为OGLRectangle的类:

class OGLRectangle : public Renderable, public Listener
{
public:
                    OGLRectangle();
                    OGLRectangle(float cX, float cY);
                    ~OGLRectangle();
...
}

这是一个Button类继承的,它包含所有按钮类型之间的共享方法:

 class Button : public OGLRectangle

最后,ButtonBrowse类继承自此,并包含文件打开方法:

class ButtonBrowse : public Button
{
    public:
        ButtonBrowse(float cX, float cY);
...
}

现在我说对了要在ButtonBrowse中传递构造函数的参数,我需要在构造函数中做这样的事情:

ButtonBrowse::ButtonBrowse(float cX, float cY) : OGLRectangle(cX, cY)
{
...
}

如果是,为什么我会收到标题中的间接非虚拟错误?

2 个答案:

答案 0 :(得分:5)

您需要调用Button的构造函数,然后调用OGLRectangle构造函数。

ButtonBrowse::ButtonBrowse(float cX, float cY) : Button(cX, cY)
{
...
}

只要Button将其构造函数设置为将参数传递到其直接基类OGLRectangle,就应该没问题。

答案 1 :(得分:0)

这是编译器不允许直接传递的, 您应该逐步将这些值传递给基类的构造函数目标。