我很抱歉,如果这个问题是一个非常简单的问题,但我是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)
谢谢
输入构造函数的主体后,所有成员变量都已初始化.此后,您只能分配给他们.这不适用于引用 - 正如我们所知,它们需要在它们的生命周期开始时进行初始化.
您需要使用成员初始化列表:
Logic::Logic(const FileManager& manager)
: m_fileManager(manager) // m_fileManager is initialized here
{
}
Run Code Online (Sandbox Code Playgroud)
考虑一下你是否真的想要一个参考成员.首先,它们使您的课程不可分配.智能指针可能是更好的选择.