|
楼主 |
发表于 2012-3-20 14:45:20
|
显示全部楼层
本帖最后由 knightlixiao 于 2012-3-20 14:50 编辑
xuganggm 发表于 2012-3-20 12:59
可以把你的 FindNodeVisitor::getFirst () 代码贴出来看看吗?没有找到应该返回 0 或者 NULL
你好,以下是节点访问器的代码,红色的是getFirst()函数。程序运行到getFirst函数中return *(foundNodeList.begin());
就会报错中断。谢谢
findNodeVisitor::findNodeVisitor() : osg::NodeVisitor(TRAVERSE_ALL_CHILDREN),
searchForName()
{
}
findNodeVisitor::findNodeVisitor(const std::string &searchName) :
osg::NodeVisitor(TRAVERSE_ALL_CHILDREN),
searchForName(searchName)
{
}
void findNodeVisitor::apply(osg::Node &searchNode)
{
if (searchNode.getName() == searchForName)
{
foundNodeList.push_back(&searchNode);
}
traverse(searchNode);
}
void findNodeVisitor::setNameToFind(const std::string &searchName)
{
searchForName = searchName;
foundNodeList.clear();
}
void findNodeVisitor::apply(osg::Transform &searchNode)
{
apply ( (osg::Node&) searchNode);
traverse(searchNode);
}
void findNodeVisitor::apply(osg::Geode &geode)
{
apply( (osg::Node&) geode);
traverse((osg::Node&) geode);
}
osg::Node* findNodeVisitor::getFirst()
{
return *(foundNodeList.begin());
}
|
|