Qt с кодовыми блоками - неопределенная ссылка на vtable - PullRequest
0 голосов
/ 04 ноября 2011

Я создал проект в qt (GUI и скелет для логики), а затем я создал проект QT в кодовых блоках, чтобы выполнить кодирование в этой IDE.
К сожалению, я получаю ошибки в стиле: неопределенная ссылка на vtable для 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)
{

}

1 Ответ

1 голос
/ 04 ноября 2011

Это сообщение об ошибке обычно вводит в заблуждение, но на самом деле (обычно) причина в том, что Вы не определили одну из своих виртуальных функций.

Вот демонстрационный пример :

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

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

информация о компиляции:

/ home / 4VqWl0 / ccMjLi2V.o: в функции main':<br> prog.cpp:(.text+0x19): undefined reference to vtable для MyClass .<br> prog.cpp:(.text+0x1e): undefined reference to MyClass :: doSomethingMore () '
collect2: ld вернул 1 статус выхода

Хорошо прочитано:

Что означает, что «виртуальная таблица» является неразрешенной внешней?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...