我在一个函数中读取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没有值呢??
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没有值呢??
send 里的是不是同一个
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);
}你再看看有没有数据
看神马时候变成了空
用引用,同时传递pointlist进去作为参数
pointlist 你这个是全局或者成员变量不?你把你调用send的地方以及上下文贴点出来我看看
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:
//其他变量
};把有关的就有那么多了,
不是引用的问题,send 和 getpointlist函数都没有错。