查看: 1474|回复: 3

不解为什么会出现这样的错误

[复制链接]

该用户从未签到

发表于 2009-5-3 15:10:36 | 显示全部楼层 |阅读模式
我自己创建了八叉树,结果正确,但是在遍历八叉树时出错。遍历函数的参数为创建的八叉树,刚进入该函数时,参数是正确的,但是经过简单的操作后,参数的值居然改变了,很多指针的地址出错。代码如下,出现错误的截图也如下
void CreateOctree::preOrder(OctreeNode* pOctreeNode)//OctreeNode为八叉树节点类
{
        if (pOctreeNode)
        {
                int octreePosition = pOctreeNode->getOctreeNodePosition();
                if (octreePosition == -1)
                {
                        cout<<"没有设置本八叉树节点的位置变量!"<<endl;
                }
                else
                {
                        switch(octreePosition)
                        {
                        case 0:
                                cout<<"根节点"<<endl;
                                break;
                        case 1:
                                cout<<"FRONT_TOP_LEFT节点"<<endl;
                                break;
                        case 2:
                                cout<<"FRONT_TOP_RIGHT节点"<<endl;
                                break;
                        case 3:
                                cout<<"FRONT_BOTTOM_RIGHT节点"<<endl;
                                break;
                        case 4:
                                cout<<"FRONT_BOTTOM_LEFT节点"<<endl;
                                break;
                        case 5:
                                cout<<"BACK_TOP_RIGHT节点"<<endl;
                                break;
                        case 6:
                                cout<<"BACK_TOP_LEFT节点"<<endl;
                                break;
                        case 7:
                                cout<<"BACK_BOTTOM_RIGHT节点"<<endl;
                                break;
                        case 8:
                                cout<<"BACK_BOTTOM_LEFT节点"<<endl;
                                break;
                        default:
                                break;
                        }
                }
                for (unsigned int i=0;i<pOctreeNode->getModelGroup()->getNumChildren();i++)
                {
                        osg::Node* temp = pOctreeNode->getModelGroup()->getChild(i);
                        cout<<"等级:"<<p->getLevel()<<" 第: "<<i+1<<" 个零件模型的名称为"<<temp->getName()<<endl;
                }
                preOrder(pOctreeNode->getFRONT_TOP_LEFT());
                preOrder(pOctreeNode->getFRONT_TOP_RIGHT());
                preOrder(pOctreeNode->getFRONT_BOTTOM_LEFT());
                preOrder(pOctreeNode->getFRONT_BOTTOM_RIGHT());
                preOrder(pOctreeNode->getBACK_TOP_RIGHT());
                preOrder(pOctreeNode->getBACK_TOP_LEFT());
                preOrder(pOctreeNode->getBACK_BOTTOM_LEFT());
                preOrder(pOctreeNode->getBACK_BOTTOM_RIGHT());
        }
}
函数入口处,参数正确
函数入口处.gif
函数经过简单的步骤后在,for循环处出错
出问题.gif

有没人遇到过这样的情况,请指教。

[ 本帖最后由 ghczhaolei 于 2009-5-3 15:22 编辑 ]

该用户从未签到

 楼主| 发表于 2009-5-3 15:31:04 | 显示全部楼层
经过但不调试,发现在进入switch语句后就出现了图中的错误

该用户从未签到

发表于 2009-5-3 16:22:09 | 显示全部楼层
你跟踪一下 octreePosition这个变量,,,看看得到的值呗~~~~~~这个不好解释,,,,慢慢调吧,,可能是指针错误~~~

该用户从未签到

 楼主| 发表于 2009-5-3 16:24:09 | 显示全部楼层
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表