我正在尝试在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)
{
...
}
如果是,为什么我会收到标题中的间接非虚拟错误?
答案 0 :(得分:5)
您需要调用Button
的构造函数,然后调用OGLRectangle
构造函数。
ButtonBrowse::ButtonBrowse(float cX, float cY) : Button(cX, cY)
{
...
}
只要Button
将其构造函数设置为将参数传递到其直接基类OGLRectangle
,就应该没问题。
答案 1 :(得分:0)
这是编译器不允许直接传递的, 您应该逐步将这些值传递给基类的构造函数目标。