**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
昨天关门了。
Improve this question
我的项目中有这样一段代码,它必须在使用RapidXML解析的XML树中搜索精确匹配。它确实找到了匹配项,但在结尾处总是空指针匹配项。我不知道应该按照什么顺序编写函数,有人能帮我吗?
xml_node<>* processNode(xml_node<>* node, char* lookout)
{
for (xml_node<>* child = node->first_node(); child; child = child->next_sibling())
{
cout << "processNode: child name is " << child->name() << " comparing it with " << lookout << endl;
if (strcmp(child->name(), lookout) == 0) {
return child;
}
processNode(child, lookout);
}
return nullptr;
}
2条答案
按热度按时间eh57zj3b1#
你应该写信的
您应该指定要返回递归调用的结果。
当你编写没有
return
语句的函数调用时,它所做的只是创建本地临时对象,该对象由函数processNode
返回,它会立即删除它。想象一下,你想从g
函数返回f
函数的结果,你会这样写。递归调用也是一样。你想返回下一次调用的结果。所以你的最终函数应该是
qojgxg4l2#
你需要返回递归的结果-递归函数的工作方式和非递归函数完全一样,并返回到调用它们的地方。
但是,您不能直接返回它,因为这样您只能查看其中一个子对象。
您需要首先存储该值,然后仅在找到所需内容时才返回该值。
大概是这样的