C++ 如何检索列表数据结构中变量的指针?

C++ 如何检索列表数据结构中变量的指针?,c++,c++11,C++,C++11,(所有这些都是在C++中完成的) 我正在处理一个节点树。node类只是一些变量和子节点列表。我的目标是通过在变量上匹配来检索指向X层以下节点的指针 我的目标是创建一个类似这样的函数 Node* Node::returnChild(int depth, string match) { ... } 这应该递归地遍历所有节点子节点,然后搜索具有与字符串变量匹配的变量的节点。在查找匹配节点时,它应该获取节点的地址,将其保存在指针中,并将其返回到functioncall 我设法创建了一个工作函

(所有这些都是在C++中完成的)

我正在处理一个节点树。node类只是一些变量和子节点列表。我的目标是通过在变量上匹配来检索指向X层以下节点的指针

我的目标是创建一个类似这样的函数

Node* Node::returnChild(int depth, string match)
{
     ...
}
这应该递归地遍历所有节点子节点,然后搜索具有与字符串变量匹配的变量的节点。在查找匹配节点时,它应该获取节点的地址,将其保存在指针中,并将其返回到functioncall

我设法创建了一个工作函数,将节点的子树向下迭代到指定的深度,并找到了正确的节点。它甚至打印出字符串值,以确保它是正确的节点。但是当试图通过函数外部的指针(由函数提供)使用节点时,我什么也没有得到

在我用于for循环的函数中,如下所示:

for(auto forNode : this->children)
这很好,但在循环范围内访问的节点“forNode”似乎是列表中真实节点的临时副本。此副本在其for loops作用域之外不“存在”,因此当它在函数外部返回给我时,我将无法访问位于指针地址的节点(因为该地址不再有节点)


因此,真正的问题是:如果提供了节点列表、深度和匹配字符串,如何获得指向“真实”节点的指针?

您必须将for循环切换到类似以下内容:

for (auto& forNode : this->children) 

这将确保forNode没有按值复制,然后在您离开for循环作用域时无效。

对于(auto&forNode:this->children),如果发布更多代码可能会更容易,但您应该为(Auto&FoNodo::/Cuth>)以获得对孩子的引用。我不认为<代码>节点*::节点< /代码>是C++中的一个有效名称。这是一个键入吗?也许你是指“代码>节点*No::Re转转子(…)< /Cord>?@ USER 1717954,我如何正确地标记你的答案?非常感谢你的帮助!我会发布一个答案;