繁体   English   中英

带代码块的Qt-对vtable的未定义引用

[英]Qt with codeblocks - undefined reference to vtable

我已经在qt中创建了项目(GUI和逻辑框架),然后在代码块中创建了QT项目,以便在此IDE中进行编码。
不幸的是,我在样式上遇到错误:Calc_Button等对vtable的未定义引用。
这段代码可以使用Qt很好地编译,但是它不想使用代码块进行编译。 使用相同的编译器。
我可以提供代码,但实际上很多-甚至只是存根。
这就是Calc_Button类的样子:

#ifndef CALC_BUTTON_H
#define CALC_BUTTON_H

#include <QPushButton>

class Calc_Button : public QPushButton
{
    Q_OBJECT
private:
protected:

public:
    explicit Calc_Button(QWidget *parent = 0);

signals:
    void clicked(QString);

public slots:
    void click()
    {
        emit clicked(QString(this->text()));
    }

};

#endif // CALC_BUTTON_H

这是cpp:

#include "calc_button.h"

Calc_Button::Calc_Button(QWidget *parent) :    QPushButton(parent)
{

}

该错误消息通常会引起误解,但实际上(通常)是您没有定义虚拟函数之一的原因。

这是一个示例演示

class MyClass
{
    public:
    virtual void doSomething() { }
    virtual void doSomethingMore();
};

int main()
{
    MyClass obj;
    obj.doSomething();
    obj.doSomethingMore();
    return 0;
}

编译信息:

/home/4VqWl0/ccMjLi2V.o:在函数main':
prog.cpp:(.text+0x19): undefined reference to
main':
prog.cpp:(.text+0x19): undefined reference to
main':
prog.cpp:(.text+0x19): undefined reference to
的vtable为MyClass的.
prog.cpp:(.text+0x1e): undefined reference to
.
prog.cpp:(.text+0x1e): undefined reference to
.
prog.cpp:(.text+0x1e): undefined reference to
MyClass :: doSomethingMore()的.
prog.cpp:(.text+0x1e): undefined reference to

collect2:ld返回1退出状态

读得好:

“虚拟表”是未解决的外部意味着什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM