作成時に、次のように自分自身への参照を渡したいclass CJ
別のオブジェクトを作成します。class BA
BA:BA(const CJ& myCJRef);
コンパイラは常に次のエラーを出します:
エラー: 初期化されていない参照メンバー BA::myCJRef
CJRef
BA
クラス型としてクラスで定義されているCJ
の量&
、*
またはどちらも何もしませんが、同じエラーが発生します。の初期化にはmyCJRef
他の 2 つのクラスを渡す必要がありますが、間違ったオブジェクトを指すため、初期化は困難です。
私は「C」の男です...これは混乱しています。
皆さんありがとう!
以下の回答に従って、このポインターを使用して CJ オブジェクトのメソッドを呼び出すところまで到達しました。実際のコードは次のとおりです。
InputPoolBufferAdapter::InputPoolBufferAdapter (CJpsMixerChannel& _CJ、int ジッター、int maxBuffers、unsigned long maxBufferAge): myCJpsMixerChannel (_CJ)
{
myCJpsMixerChannel = _CJ;
myJitter = jitter; // assuming jitter will be the number of floats
myJitterCounter = 0;
myMaxBuffers = maxBuffers;
myMaxBufferAge = maxBufferAge;
myPopulateMetadataRequests = 0;
mySendDataReadyAlert = true;
clearBufferAdapterThreshhold = CLEAR_BUFFER_ADAPTER_THRESHHOLD;
};
void InputPoolBufferAdapter::returnDataBufferToPool (ChannelBuffer_t buf)
{
void CJpsMixerChannel::myCJpsMixerChannel->returnBufferToInputPool(ChannelBuffer_t *returnBuffer_p);
};
void InputPoolBufferAdapter::notifyDataAvailable ()
{
void myCJpsMixerChannel.notifyDestinationsDataAvailable(void);
};
void InputPoolBufferAdapter::bufferAdapterError (int a)
{
void &myCJpsMixerChannel.inputBufferAdapterError(int error_code);
};
ご覧のとおり、いくつかのことを試しましたが、コンパイルされません。エラーは次のとおりです。
InputPoolBufferAdapter.cpp: メンバー関数 'virtual void InputPoolBufferAdapter::returnDataBufferToPool(ChannelBuffer_t)': InputPoolBufferAdapter.cpp:33:50: エラー: '->' トークンの前にイニシャライザーが必要です。InputPoolBufferAdapter.cpp: メンバー関数 'virtual void InputPoolBufferAdapter:: notifyDataAvailable()': InputPoolBufferAdapter.cpp:38:32: エラー: '.' の前に初期化子が必要です トークン InputPoolBufferAdapter.cpp: メンバー関数 'virtual void InputPoolBufferAdapter::bufferAdapterError(int)': InputPoolBufferAdapter.cpp:43:32: エラー: '.' の前に初期化子が必要です トークン
私は途方に暮れています.これ以上のアイデアはもはや「混乱」ではなく、間違いなく「困惑」したソフトウェアの男です.
皆さんありがとう