1

我有一堂课:

class node
{
public:

   node& parent;
}

当我知道它的正确值时,我想设置该parent值:

node parent;
...

node n;  // here node.parent is a not valid value
n.parent = parent; 

但我也必须在构造函数中设置它的值。我能怎么做?

4

2 回答 2

3

您无法更改引用引用的变量。所以如果你不能在构造函数中初始化它,你就不需要引用。您可以使用常规指针,但最好使用适合您特定用途的某种智能指针。正确答案主要取决于如何管理被引用对象的生命周期。

于 2012-07-01T10:23:35.497 回答
2

如果您想使用引用而不是指针,因为您想建议类实例不拥有父节点,那么您可以使用std::reference_wrapperC++11 的<functional>.

std::weak_ptr如果父级持有对子级的引用而子级持有对父级的引用,我建议不要使用智能指针(可能除外)。在这种情况下使用智能指针会创建一个循环依赖,这意味着您的对象永远不会被破坏。

于 2012-07-01T10:27:33.450 回答