Спасибо, сработало.
А можно еще вопрос. Я этот пример стал пробовать, когда столкнулся с такой же проблемой у себя в программе. Изначально у меня был класс потока MyThread в h файле класса RILFeniksEngine, в котором я его собирался использовать. В том h файле он был прописан, как в коде первого поста, а другой класс RILFeniksEngine был описан без кода методов, код методов я прописал в cpp файле. И у меня сработала такая же ошибка.
Когда я вынес класс потока MyThread в отдельный h файл, без всяких cpp файлов к нему, и подключил его к h файлу упомянутому выше класса RILFeniksEngine, все заработало.
Вот так у меня было изначально h файл, о котором говорилось ранее (все методы класса RILFeniksEngine прописаны в cpp файле):
#ifndef NENGINE_H
#define NENGINE_H
#include <QThread>
#include <QTimer>
#include <QObject>
#include "subsystemsoftheengine.h" //этот файл подключает файлы подсистем в класса RILFeniksEngine, и никак не влияет на класс потока по данной теме
class MyThread : public QThread {
Q_OBJECT
private:
int m_nValue;
public:
MyThread() : m_nValue(10)
{
}
void run()
{
QTimer timer;
connect(&timer, SIGNAL(timeout()), SLOT(slotNextValue()));
timer.start(1000);
//exec();
}
signals:
void finished ( );
void currentValue(int);
public slots:
void slotNextValue()
{
emit currentValue(--m_nValue);
if (!m_nValue) {
emit finished();
}
}
};
class RILFeniksEngine
{
public:
RILFeniksEngine();
~RILFeniksEngine();
//Запуск игры
void Run();
//Вывод текста экрана
QString GetScreen(int indexScreen = 0);
//Загрузка данных игры в проигрыватель
void LoadGame(QString PathFile);
private:
//Подсистема работы со стеком
RFSubsystemStack* ptSubsystemStack;
//Подсистема выполнения команд
RFSubsystemCommandsExecution* ptSubsystemCommandsExecution;
//Подсистема областей данных
RFSubsystemDataArea* ptSubsystemDataArea;
//Подсистема экранов
RFESubsystemScreens* ptSubsystemScreens;
//Статус выполнения игры
RFStatusGameExecution* theStatusGameExecution;
//Тот самый объект класса потока
MyThread *m;
};
#endif // NENGINE_H
Объект m класса MyThread, создаю в конструкторе и там же его запускаю, ровно также как и все подобные ему объекты.
А из-за чего не работает, когда я так прописывал, как было указано в изначальном варианте кода, так и не понял.