Qt „sygnalizuj niezdefiniowany błąd odniesienia” po odziedziczeniu z QObject
Ostatnio potrzebowałem dodać sygnał do klasy, więc zmieniłem klasę na dziedziczącą z QObject i dodałem makro Q_OBJECT do definicji klasy. Od kiedy to zrobię„sygnalizuj niezdefiniowany błąd odniesienia dla„ vtable for CLICpolecenie ”” błąd w wierszu klasy poniżej:
// File clicommand.h
#include <QString>
#include <QStringList>
#include <QTcpSocket>
#include "telnetthread.h"
class CLICommand : public QObject
{
Q_OBJECT
public:
CLICommand(TelnetThread *parentTelnetThread);
signals:
void signal_shutdown_request();
private:
TelnetThread *m_parentTelnetThread;
i drugi błąd„sygnalizuj niezdefiniowany błąd odniesienia dla„ vtable for CLICpolecenie ”” w linii poniżej (intializując zmienną składową):
// File clicommand.cpp
#include <QDebug>
#include <QTcpSocket>
#include <QTextStream>
#include "version.h"
#include "clicommand.h"
#include "telnetthread.h"
#include "logger.h"
CLICommand::CLICommand(TelnetThread *parentTelnetThread)
: m_parentTelnetThread(parentTelnetThread)
{
}
i właśnie tutaj emituję sygnał. Linia emitująca generuje błądniezdefiniowane odwołanie do `CLICommand :: signal_shutdown_request () ' :
// file shutdown_clicommand.cpp
#include <QIODevice>
#include "clicommand.h"
#include "logger.h"
#include "version.h"
void CLICommand::execute_shutdown(const QStringList &commandLineFragments)
{
emit signal_shutdown_request();
}
Przeczytałem kilka postów na ten temat, ale wydaje się, że nie mają zastosowania. Próbowałem nawet czyszczenia / przebudowy. Nie używam boost ani innych bibliotek ... tylko QT 5
Czy ktoś może mi powiedzieć, co robię źle?
ROZWIĄZANIE: w QT Creator kliknij prawym przyciskiem myszy projekt, wybierz RUN QMAKE, a następnie odbuduj wszystko. Inne posty o uruchomieniu REBUILD ALL są niepoprawne ... w swoim własnym NIE będą działać qmake.