InputPoolBufferAdapter

InputPoolBufferAdapter

我们创建了一个class CJ,它会创建一个不同的class BA对象,该对象想要向其自身传递引用,如下所示:

BA:BA(const CJ& myCJRef);

编译器始终会出现以下错误:


CJRefBA类中定义为类类型CJ
现在,数量的&*或什么都不做,只会导致相同的错误。初始化很困难,因为myCJRef的初始化需要传递另外两个类,但是它会指向错误的对象。

我是个“C”家伙……这真令人困惑。

谢谢大家!

按照以下答案,我到达了使用该指针调用CJ对象中的方法的地步,真实代码如下:

InputPoolBufferAdapter::InputPoolBufferAdapter(CJpsMixerChannel&_CJ,int抖动,int maxBuffers,无符号长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:在成员函数“虚拟无效InputPoolBufferAdapter::returnDataBufferToPool(ChannelBuffer_t)”中:
InputPoolBufferAdapter.cpp:33:50:错误:“->”标记之前的预期初始化程序
InputPoolBufferAdapter.cpp:在成员函数“virtual void InputPoolBufferAdapter::notifyDataAvailable()”中:
InputPoolBufferAdapter.cpp:38:32:错误:“。” token 之前的预期初始化程序
InputPoolBufferAdapter.cpp:在成员函数“虚拟无效InputPoolBufferAdapter::bufferAdapterError(int)”中:
InputPoolBufferAdapter.cpp:43:32:错误:“。” token 之前的预期初始化程序

我不知所措,对此的任何想法都不再“困惑”,而绝对是“迷惑”的软件专家(我不敢相信在“C”嵌入式系统中使用25年后,这会把我搞砸了!)。

谢谢大家

最佳答案

您应该发布一些代码。
无论如何,不​​使用任何C++ 11语法,这就是我要遵循的方式:

CJ::CJ() : BA(*this) { //CJ constructor here }

BA::BA(const CJ& myCJ) : myCJref(myCJ) { //BA constructor here }

在这里,我只写了CJ和BA构造函数。 BA必须具有数据成员
const CJ&myCJref
为此工作。

09-06 21:18