При написании кода фейкового клиента для unit-тестов столкнулся с такой проблемой, что препроцессор MOC не обрабатывал мой класс, выдавая предупреждение:
Note: No relevant classes found. No output generated.
Исходный код класса:
#pragma once
#include <QObject>
#include <QLocalSocket>
class FakeLocalClient : public QObject {
Q_OBJECT
public:
FakeLocalClient();
~FakeLocalClient();
void connectToServer(const QString& serverName, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
bool waitForConnected(int msecs = 30'000);
Q_SIGNAL void messageReceived(const QString& message);
Q_SIGNAL void errorOccured(const QString& errorMessage);
Q_SLOT void readIncomingMessage();
private:
QLocalSocket* client = nullptr;
quint32 blockSize = 0;
};
На форумах в основном пишут о том, что отсутствует макрос Q_OBJECT
, что не верно для моего случая.
Реальной причиной ошибки оказалось использование апострофа для разделения разрядов в числовом литерале (одно из нововведений C++14) в объявлении функции waitForConnected
.