递归获取子节点
Node* HelloWorld::seekFromRootByName(Node* root, std::string& name)
{
if (!root)
return nullptr;
if (root->getName() == name)
return root;
const auto& arrayNode = root->getChildren();
for (auto& child : arrayNode)
{
Node* pNode = dynamic_cast<Node*>(child);
if (pNode)
{
Node* res = seekFromRootByName(pNode, name);
if (res)
return res;
}
}
return nullptr;
}
在循环体中尽量少用这个方法,原因程序猿都知道