我有一个线程类Buffer(自己制作的类),以及许多派生类,如BufferTypeA、BufferTypeB ...
由于我必须按特定顺序同步它们,因此我给它们中的任何一个提供一个整数,表示运行特定任务的顺序。我还必须在每个线程 Buffer 中知道下一个运行任务的线程,所以我向每个 BufferType 传递一个对所有它们都必须共享的整数的引用,我不想让它成为全局的。
我在任何时候迷路了,我不知道在哪里。
首先,我从一个类中创建所有 BufferTypes,我还将共享整数定义为:
int currentThreadOrder;
在创建 BufferTypes 时:
int position = 0;
if (NULL == bufferA) {
bufferA = new BufferTypeA(¤tThreadOrder, ++position,
waitCondition);
}
if (NULL == bufferB) {
bufferB = new BufferPos(¤tThreadOrder, ++position,
waitCondition);
}
if (NULL == bufferC) {
bufferC = new BufferRtk(¤tThreadOrder, ++position,
waitCondition);
}
然后,在 BufferTypeA 标头中:
class BufferTypeA: public Buffer {
public:
BufferTypeA(int currentThreadOrder,
int threadConnectionOrder = 0,
QWaitCondition *waitCondition = NULL);
//..
}
在 cpp 文件中:
BufferTypeA::BufferTypeA(int currentThreadOrder, int threadConnectionOrder, QWaitCondition *waitCondition):
Buffer(currentThreadOrder, threadConnectionOrder, waitCondition) { }
现在我将显示 Buffer 标头:
class Buffer: public QThread {
public:
Buffer(int ¤tThreadOrder,
int threadConnectionOrder = 0,
QWaitCondition *waitCondition = NULL);
//...
protected:
QWaitCondition *waitCondition;
int threadConnectionOrder;
int ¤tThreadOrder; // Shared address
}
最后是cpp:
Buffer::Buffer(int ¤tThreadOrder, int threadConnectionOrder, QWaitCondition *waitCondition) {
this->threadConnectionOrder = threadConnectionOrder;
this->waitCondition = waitCondition;
this->currentThreadOrder = currentThreadOrder;
}
我得到的错误是error: uninitialized reference member Buffer::currentThreadOrder。
我不好意思问,因为这将是一个简单的指针和地址问题,但我看不出问题出在哪里,所以请帮忙。