c++ - 如何取消引用在 C++ 中通过引用传递的指针?

标签 c++ reference pointers dereference

我正在做(类似的)事情:

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/

相关文章:

c++ - SDL_GAMECONTROLLERCONFIG 与 SDL_GameControllerAddMappingsFromFile

c++ - 单一与共享所有权的含义

c++ - 在下面代码的上下文中,为什么 "cout << c"合法而 "c = "x""非法?

c - 通过引用传递c中的指针数组

c++ - 在 C++ 中定义变量和指针(错误 : Segmentation fault (core dumped))

C++ const 函数参数。有没有办法只声明函数的单一签名?

c++ - while循环中的除法

c++ - 如何在 C++ 中创建类对象的 vector ?

java - 抽象类中的私有(private)引用

delphi - 存储 Delphi 接口(interface)引用时出现奇怪的 AV