传递对构造函数的引用

Ben*_*nnX 0 c++ reference

我很抱歉,如果这个问题是一个非常简单的问题,但我是c ++的新手,并且正在研究一个简单的vocable培训师来理解c ++.(来自java ..)

我想传递一个const FileManager参考我的逻辑.但我没有得到它的工作.我不想要副本等.

所以我试着这样:(主要)

FileManager& file = FileManager();
Logic logic = Logic(file);
Run Code Online (Sandbox Code Playgroud)

在逻辑内部我想存储参考:

class Logic
{
public:

    Logic(const FileManager& manager);
    ~Logic();

private: 
    const FileManager& m_fileManager;
};

Logic::Logic(const FileManager& manager) : 
{   
    m_fileManager = manager;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

jro*_*rok 7

输入构造函数的主体后,所有成员变量都已初始化.此后,您只能分配给他们.这不适用于引用 - 正如我们所知,它们需要在它们的生命周期开始时进行初始化.

您需要使用成员初始化列表:

Logic::Logic(const FileManager& manager)
    : m_fileManager(manager) // m_fileManager is initialized here
{   
}
Run Code Online (Sandbox Code Playgroud)

考虑一下你是否真的想要一个参考成员.首先,它们使您的课程不可分配.智能指针可能是更好的选择.