我有以下代码:
class SomeClass {};
class SomeOtherClass {
SomeClass& someObj;
public:
SomeOtherClass() {someObj = SomeClass();}
};
Run Code Online (Sandbox Code Playgroud)
而我得到的构造的错误SomeOtherClass说法Constructor for 'SomeOtherClass' must explicitly initialize the reference member 'someObj'.
所以我想我的问题非常紧张.你如何初始化参考?
您正试图存储对正在被破坏的临时对象的引用,因此肯定会出错; 即使使用其他答案中描述的构造函数初始化列表.
引用应该指向一个存储在别处的对象,就像指针一样.您确定在这种情况下甚至需要使用参考吗?
SomeOtherClass() : someObj(SomeClass()) {}
Run Code Online (Sandbox Code Playgroud)
更新:我应该提醒一下,这是你不应该逐字使用的东西,因为它会导致对即将死亡的临时对象实例的引用.
这个想法是上面的,但你必须传入一个生命周期不短于SomeOtherClass你正在构建的实例的对象.