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

Bra*_*ite 3 c++ inheritance

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

class OGLRectangle : public Renderable, public Listener
{
public:
                    OGLRectangle();
                    OGLRectangle(float cX, float cY);
                    ~OGLRectangle();
...
}
Run Code Online (Sandbox Code Playgroud)

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

 class Button : public OGLRectangle
Run Code Online (Sandbox Code Playgroud)

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

class ButtonBrowse : public Button
{
    public:
        ButtonBrowse(float cX, float cY);
...
}
Run Code Online (Sandbox Code Playgroud)

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

ButtonBrowse::ButtonBrowse(float cX, float cY) : OGLRectangle(cX, cY)
{
...
}
Run Code Online (Sandbox Code Playgroud)

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

Law*_*llo 6

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

ButtonBrowse::ButtonBrowse(float cX, float cY) : Button(cX, cY)
{
...
}
Run Code Online (Sandbox Code Playgroud)

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