我们有一个class CJ
that 在创建时,它会创建一个不同的class BA
对象,它希望向其传递对自身的引用,如下所示:
BA:BA(const CJ& myCJRef);
编译器总是出错:
错误:未初始化的引用成员 BA::myCJRef
CJRef
在类中定义BA
为类类型CJ
现在的数量&
,*
或者什么都不做,只会导致同样的错误。初始化很困难,因为初始化myCJRef
需要传递另外两个类,但它会指向错误的对象。
我是一个'C'家伙......这令人困惑。
谢谢大家!
按照下面的答案,我到了使用这个指针调用 CJ 对象中的方法的地步,真正的代码如下:
InputPoolBufferAdapter::InputPoolBufferAdapter (CJpsMixerChannel& _CJ, int jitter, 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: error: '.' 之前的预期初始化程序 令牌 InputPoolBufferAdapter.cpp:在成员函数“virtual void InputPoolBufferAdapter::bufferAdapterError(int)”中:InputPoolBufferAdapter.cpp:43:32:错误:“。”之前的预期初始化程序 令牌
我很茫然,对于这个不再“困惑”但绝对是“迷惑”的软件人的任何想法(我不敢相信在“C”嵌入式系统工作了 25 年后,这让我搞砸了!)。
谢谢大家