我正在做(类似的事情):
void insert(Node*& node, string val, Node* parent)
{
if (node == NULL)
instantiateNode(node, val, parent);
else
insert(node->child, val, node);
}
问题是,这instantiateNode(..., parent)
似乎修改了*&node
在设置*parent
. instantiateNode()
应该改变,但如果它改变了 ,那么你有一个节点被设置为它的父节点,这没有意义,也不起作用。完全没有。node
parent
我完全关心指针引用的原因是因为它消除了特殊情况并显着减少了我必须做的错误检查量。由于我这样做是为了减少行数和琐碎的算法重复,因此我可以通过将代码行数增加大约一倍来解决这个问题。但我宁愿不这样做,而且我觉得应该有一种方法可以取消引用指针引用以获取指向同一对象的新指针。而且,真的,我认为应该通过传递*&node
来*parent
完成它,但显然 gcc 正在优化它。