首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

std:vector的有关问题

2012-03-07 
std::vector的问题先看看偶的代码:NXOpen::Features::FeatureCollection*f_collectionthePart- Features

std::vector的问题
先看看偶的代码:
        NXOpen::Features::FeatureCollection*   f_collection   =   thePart-> Features();
        for   (NXOpen::Features::FeatureCollection::iterator   it=f_collection-> begin();it   !=   f_collection-> end();it++)
        {
                NXOpen::Features::Feature*   f11=   (NXOpen::Features::Feature*   )   *it;
                std::vector <NXOpen::Features::Feature*>   f_v;
                f_v=f11-> GetChildren();
                if   (f_v.size()   >   0)
                {
                        for   (std::vector <NXOpen::Features::Feature*> ::iterator   it_sub=f_v.begin();
                                it_sub!=f_v.end();it_sub++)
                        {
                                NXOpen::Features::Feature*   f22=   (NXOpen::Features::Feature*   )   *it;
                        }

                }
        }

上面的代码编译和连接没有问题,但是执行到   f_v=f11-> GetChildren();这一句时,就报错说是内存冲突。

我的目的是想把getChildren()函数所返回的一个vector取出来,存在另一个声明的名为f_v的vector中。第一个for循环执行的没有大问题,为什么在赋值时以及使用vector的size等函数时就出错?提示说是Access   Violation?
其中,getChildren的函数说明如下:
std::vector <NXOpen::Features::Feature   *>   NXOpen::Features::Feature::GetChildren     (         )      
        Returns   the   immediate   child   features.  

因为是做二次开发,所以getChildren这个函数的源代码看不到。是我的vector用法有问题吗?
这个问题搞了快半个月了还没搞定,救命啊!

[解决办法]
f_v=f11-> GetChildren();改成就只有f11-> GetChildren();看是不是仍内存冲突。
f11恐怕是空指针吧。
[解决办法]
std::vector <NXOpen::Features::Feature*> * f_v;
f_v=&f11-> GetChildren();
换指针试试
[解决办法]
有条件的话,建立一个单独的工程,单独测试那个函数。看看是不是有问题?

[解决办法]
我在做一个项目时也遇到过几个内存冲突问题,但在我那个项目里100%的是指针问题,建议最好多多测试指针,因为他不是每次测试都出错,随机性很大的.
另加一句,再看一下是不是权限问题.

热点排行