我有一堂课:
class node
{
public:
node& parent;
}
当我知道它的正确值时,我想设置该parent
值:
node parent;
...
node n; // here node.parent is a not valid value
n.parent = parent;
但我也必须在构造函数中设置它的值。我能怎么做?
您无法更改引用引用的变量。所以如果你不能在构造函数中初始化它,你就不需要引用。您可以使用常规指针,但最好使用适合您特定用途的某种智能指针。正确答案主要取决于如何管理被引用对象的生命周期。
如果您想使用引用而不是指针,因为您想建议类实例不拥有父节点,那么您可以使用std::reference_wrapper
C++11 的<functional>
.
std::weak_ptr
如果父级持有对子级的引用而子级持有对父级的引用,我建议不要使用智能指针(可能除外)。在这种情况下使用智能指针会创建一个循环依赖,这意味着您的对象永远不会被破坏。