c++ - 无法将 'this' 的引用传递给另一个类的构造函数

标签 c++ object reference

我们有一个 class CJ,在创建时,它会创建一个不同的 class BA 对象,它希望将对自身的引用传递给该对象,如下所示:

BA:BA(const CJ& myCJRef);

编译器总是出错:

error: uninitialized reference member BA::myCJRef

CJRefBA 类中定义为类类型 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: 错误:'.' 标记之前的预期初始值设定项 InputPoolBufferAdapter.cpp:在成员函数‘virtual void InputPoolBufferAdapter::bufferAdapterError(int)’中: InputPoolBufferAdapter.cpp:43:32: 错误:'.' 标记之前的预期初始值设定项

我很茫然,关于这个不再“困惑”但绝对是“糊涂”的软件人的任何更多想法(我不敢相信在“C”嵌入式系统中工作了 25 年之后,这让我搞砸了!) .

谢谢大家

最佳答案

我需要猜测一下,但是您的类 BA 也有一个名为 myCJRef 的成员变量,对吧?它的类型是const CJ&,就像参数一样。在这种情况下,您需要这样做:

BA::BA( const CJ& r ) : myCJRef( r )
{
  // note: myCJRef = r; would not work here.
}

因为需要初始化成员变量。该错误不涉及您的 ctor 的参数。

关于c++ - 无法将 'this' 的引用传递给另一个类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15692312/

相关文章:

c++ - 如何制作模板结构 vector

c++ - Directx 11 内存管理

c++ - 首次使用对象后调用的全局对象构造函数

c++ - 从 shared_ptr 移出的对象是否保证被清空?

c++ - 在 C++ 中实例化一个新对象

c++ - C++ 中的引用语义

python类对象定义

java - 如何使用形状的面积从该数组中删除形状?

javascript - 引用错误 "object property is not defined"

C++容器,在析构时自动删除元素