Russian Qt Forum

Qt => Общие вопросы => Тема начата: boobsik от Август 17, 2009, 09:00



Название: undefined reference to `vtable for
Отправлено: boobsik от Август 17, 2009, 09:00
ошибка вылетает при попытке компиляции следующего класса:

Код:
class MLTcpServer : public QTcpServer{
    Q_OBJECT
public:
    MLTcpServer(QObject *parent = 0);
    ~MLTcpServer();
signals:
    void fucking_connection(int socketDescriptor);
protected:
    void incomingConnection(int socketDescriptor);   
};

MLTcpServer::MLTcpServer(QObject *parent)
        :QTcpServer(parent){
}

MLTcpServer::~MLTcpServer(){

}

 void MLTcpServer::incomingConnection(int socketDescriptor) {
     emit fucking_connection(socketDescriptor);
}


Название: Re: undefined reference to `vtable for
Отправлено: boobsik от Август 17, 2009, 09:14
создал новый класс, скопировал все методы и загрузил в проект и новый класс скомпилировался без единого предупреждения, кто нибудь даст намек, на то, что происходит?


Название: Re: undefined reference to `vtable for
Отправлено: kuzulis от Август 17, 2009, 09:31
может быть нужно:
Код:
    virtual ~MLTcpServer();


Название: Re: undefined reference to `vtable for
Отправлено: spirit от Август 17, 2009, 09:37
может быть нужно:
Код:
    virtual ~MLTcpServer();
а зачем, если деструктор в родителе и так виртуальный?  :)


Название: Re: undefined reference to `vtable for
Отправлено: spirit от Август 17, 2009, 09:39
а какое полное наименование ошибки?


Название: Re: undefined reference to `vtable for
Отправлено: BRE от Август 17, 2009, 09:50
создал новый класс, скопировал все методы и загрузил в проект и новый класс скомпилировался без единого предупреждения, кто нибудь даст намек, на то, что происходит?
Попробуй сделать qmake; make
Возможно, moc этот файл не подхватил.


Название: Re: undefined reference to `vtable for
Отправлено: Пантер от Август 17, 2009, 11:40
А еще лучше qmake && make clean && make


Название: Re: undefined reference to `vtable for
Отправлено: sergeyvl12 от Август 20, 2009, 18:41
вижу у тебя внизу реализацию

Код:
void MLTcpServer::incomingConnection(int socketDescriptor) 
{
     emit fucking_connection(socketDescriptor);
}

А где реализация fucking_connection() ?


Название: Re: undefined reference to `vtable for
Отправлено: Rcus от Август 20, 2009, 18:46
В "mltcpserver.moc"/"moc_mltcpserver.cpp" же :) Очевидно вы не следили за ходом дискуссии.


Название: Re: undefined reference to `vtable for
Отправлено: Igors от Август 20, 2009, 18:50
Это первое с чем и я столкнулся  :) Если имеете Q_OBJECT - нужен "moc_.."  файл который надо получать через qmake (в общем расплата за "крутизну"  :))


Название: Re: undefined reference to `vtable for
Отправлено: pastor от Август 20, 2009, 20:27
А где реализация fucking_connection() ?

Наверное, тебе нужно что-то покурить по Qt ;)


Название: Re: undefined reference to `vtable for
Отправлено: Disaron от Сентябрь 02, 2009, 09:11
Код:
#include <QObject>
В заголовочнике спасет.


Название: Re: undefined reference to `vtable for
Отправлено: crackedmind от Сентябрь 02, 2009, 10:11
Суть такая.
Если ты создаешь класс.

Код:
class My
{
};
и делаешь qmake, а затем решил добавить
Код:
class My
{
     Q_OBJECT
};
то компиляция не пройдет, т.к. надо по новой сгенерировать Makefile. qmake'же автоматически обновляет Makefile'ы только при изменении .pro/.pri файлов.