私はスレッドクラスの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) { }
次に、バッファ ヘッダーを表示します。
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です。
ポインタとアドレスの単純な問題になるのでお恥ずかしいのですが、どこに問題があるのか見当がつかないので、助けてください。