Предположим, минимальный регистр, который содержит один класс с именем Worker
на основе QThread
, а другой с именем Parser
, который является глобальным классом, находится в Worker
классе.
# parser.h
class Parser;
extern Parser *App_Parser;
class Parser {
bool init() { App_Parser = new Parser(); }
}
# parser.cpp
Parser *App_Parser = 0;
# worker.cpp
class Worker: public QThread {
Worker(int thread_id , QObject *parent) {
Parser::init ();
connect ( App_Parser , .... , this , SLOT(parseCompleted()) );
}
private slots:
void parseCompleted () {
qDebug() << "Thread ID: " << thread_id << " completed";
}
}
Итак, проблема в том, что если я создал 12
Работника в более высоком классе, я иногда мог видеть недействительным thread_id
, и он всегда был только на один уровень выше, в данном случае всегда 13
.
И если я не использую App_Parser, а просто использую new Parser()
для простого экземпляра, он работает.
Так что я думаю о том, почему здесь не следует использовать глобальные переменные.