我在一个函数中读取txt文件的数据,并保存在一个vector里面,但是我在另一个函数里面使用vector内数据时发现vector数据为空。这是什么情况??部分代码如下:
void create::getpoints()//读写操作
{
points point,obj;
FILE *file;
char oneline[255]; 
int j=0;
float rx,ry,rz,rppm;
if((file=fopen("120th.txt", "rt"))==NULL)
{
printf("cannot  open  the  file!") ;
exit(0) ;
}
getfirststr(file,oneline);
sscanf(oneline, "Vertices: %d\n", &ver);
for (int i=0;i<ver;i++,j++)
{
getfirststr(file,oneline);
sscanf(oneline, "%f %f %f %f", &rx, &ry, &rz,&rppm);
obj.x = rx;
obj.y = ry;
obj.z = rz;
obj.p=rppm;
point.x=obj.x;
point.y=obj.y;
point.z=obj.z;
point.p=obj.p;
pointlist.push_back(point);
                }
}
void create::send(vector<points>pointlist)
{
//其他操作
}在读写操作都没错的情况下,为什么我在send函数中传进来的vector<points>pointlist没有值呢??

解决方案 »

  1.   

    那你看一下 pointlist.push_back(point); 这里用的pointlist 和你传到
    send 里的是不是同一个
      

  2.   

    是一样的话你可以这样改下:
    void create::getpoints()//读写操作
    {
            points point,obj;
            FILE *file;
            char    oneline[255]; 
            int    j=0;
            float    rx,ry,rz,rppm;
            if((file=fopen("120th.txt", "rt"))==NULL)
            {
                printf("cannot  open  the  file!") ;
                exit(0) ;
            }
            getfirststr(file,oneline);
            sscanf(oneline, "Vertices: %d\n", &ver);
            for (int i=0;i<ver;i++,j++)
            {
                getfirststr(file,oneline);
                sscanf(oneline, "%f %f %f %f", &rx, &ry, &rz,&rppm);
                obj.x = rx;
                obj.y = ry;
                obj.z = rz;
                obj.p=rppm;
                point.x=obj.x;
                point.y=obj.y;
                point.z=obj.z;
                point.p=obj.p;
                pointlist.push_back(point);
                    }
    //在这里调用send
    send(pointlist);
    }你再看看有没有数据
      

  3.   

    下断点 debug
    看神马时候变成了空
      

  4.   

    代码不全,看不出问题,不过可以肯定的是,你两个的vector对象肯定不同
      

  5.   

    void create::send(vector<points>& pointlist)
    用引用,同时传递pointlist进去作为参数
      

  6.   


    pointlist 你这个是全局或者成员变量不?你把你调用send的地方以及上下文贴点出来我看看
      

  7.   


    class points
    {
    public:    //点
    float x;
    float y;
    float z;
    float p;
    points();
    ~points();
    };class create
    {
    public:
    // 向量保存点
    vector<points> pointlist;
    inline void getfirststr(FILE *f,char *strings);
    void getpoints(vector<points> pointlist); void send(vector<points>pointlist);

    private:
    //其他变量
    };把有关的就有那么多了,
      

  8.   


    不是引用的问题,send 和 getpointlist函数都没有错。
      

  9.   

    void getpoints(vector<points> pointlist);这个地方传递引用void getpoints(vector<points>& pointlist);你最上面贴的又没有这个参数!这里有这个参数你就要传引用