哪位c++大神帮忙解决个问题???在线等

问题描述,
p.addChild(p1);
p1.addChild(p2);
p2.addChild(p3);
p3->setTag(1);

p->getChildByTag(1);能获取到p3吗?如果不能该怎么做呢?
PS:中间的节点 不要设TAG。

这个函数从根节点 递归搜索所有子节点以获取tag子节点,可以搜索到,但是想返回这个结果我试了几种方式,都不能成功,甚至使用memcpy,倒是可以获取到正确的节点,但是使用的时候就会爆内存。。。我泪奔啊。。。哪位C++大神帮忙整段可用的或者修改下代码啊帮我?

void Test::getChildByTagFromAllNode(CCNode parent,int tag,CCNode result)
{
if(result != NULL)
{
return;
}
if(parent->getChildren())
{
if(parent->getChildren()->count() > 0)
{
CCObject
child;
CCARRAY_FOREACH(parent->getChildren(), child)
{
CCNode
pChild = (CCNode*) child;
if (pChild->getTag() == tag)
{
result = (CCNode*) child;
CCLog(“get========================%d”,tag);
return;
}
else
{
getChildByTagFromAllNode((CCNode*) child,tag,result);
}
}
}
else
{
if(parent->getTag() == tag)
{
CCLog(“get========================,%d”,tag);
result = parent;
return;
}
}
}
else
{
return;
}
}

递归啊

— Begin quote from ____

wb11011912099 发表于 2012-8-21 09:31 url

p2->getChildByTag(1);
能获取到p3

— End quote

当然只给出p了。。。。

— Begin quote from ____

ケンシロウ 发表于 2012-8-21 13:52 url

何不通过定义成员变量来解决?虽然耗点内存,但至少效率会快点

— End quote

那样确实是可以的,不过如果要保存的多的话就有问题了。唉。。上面我犯了个低级错误导致的。已解决