我正在做(类似的)事情:
void insert(Node*& node, string val, Node* parent)
{
if (node == NULL)
instantiateNode(node, val, parent);
else
insert(node->child, val, node);
}
问题是,instantiateNode(..., parent)
似乎修改了在设置 *parent< 时传入函数的原始
。 *&node
/instantiateNode()
应该改变节点
,但如果它改变了parent
,那么你有一个节点设置为它的父级,这没有意义,也不起作用。完全没有。
我之所以对指针引用感到烦恼,是因为它消除了特殊情况并显着减少了我必须做的错误检查量。因为我这样做是为了减少行数和琐碎的算法式重复,所以我可以通过将代码行数大约加倍来解决这个问题。但我宁愿不这样做,我觉得应该有一种方法可以取消对指针引用的引用,以获得指向同一对象的新指针。而且,真的,我认为 *&node
通过 *parent
应该已经完成了,但显然 gcc 正在优化它。
最佳答案
there should be a way to dereference a pointer reference to get a new pointer that points to the same object.
嗯,这个怎么样?
Node* n = node;
现在您已经获得了一个指向与节点相同的对象的非引用指针,这正是您所要求的。
我 95% 确定您面临的问题与引用无关,而与 instantiateNode 中的错误逻辑或您对它的使用有关。这就是为什么如果您向我们提供有关代码应该做什么的更多信息,或者甚至将代码发布到 instantiateNode 将会很有用。
关于c++ - 如何取消引用在 C++ 中通过引用传递的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1534659/