Qt与代码块-未定义的引用虚表

Qt with codeblocks - undefined reference to vtable

本文关键字:引用 虚表 未定义 代码 Qt      更新时间:2023-10-16

我在qt中创建了项目(GUI和逻辑骨架),然后我在代码块中创建了qt项目,以便在这个IDE中做编码部分。
不幸的是,我得到错误的风格:未定义的引用为Calc_Button虚表等
这段代码可以很好地用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/4 vqwl0/ccMjLi2V。0:在函数main':
prog.cpp:(.text+0x19): undefined reference to
vtable for MyClass .
prog.cpp:(.text+0x1e): undefined reference to
MyClass::doSomethingMore()'
Collect2: ld返回1退出状态

优秀阅读:

"虚表"是一个未解析的外部表是什么意思?