【发布时间】:2015-02-27 16:39:30
【问题描述】:
我正在尝试声明文件中指定长度的对象数组。然后我想用来自同一个文件的数据填充这个数组数组。
假设我的文件如下所示:
3 - 数组长度
1 2
3 4
5 6
这是我的代码
while ( getline (myfile,line) ){
istringstream ss(line);
if(i==0){
ss >> numOfObjects;
Object * array[numOfObjects];
}
if((i>=i) && (i<=1+numOfObjects)){
Object * o=new Object();
ss >> x >> y;
location l;
l.x=x;
l.y=y;
o->setLocation(l);
array[i-2]=o;
}
i++;
}
当我尝试运行我的代码时,它说数组未在此范围内声明。有什么我可以做的吗?我知道如果我在 while 循环之外声明数组,它会起作用,但我需要它必须具有文件中指定的精确长度。 对不起,如果这是一个愚蠢的问题,我只是一个初学者
【问题讨论】:
-
可变长度数组是一个编译器扩展。您应该使用矢量。
-
@Borgleader 这个,它没有在范围内声明。更多
new []需要。 -
@Borgleader 或通过
new创建数组 -
@NO_NAME 这是可能的,绝不是推荐:) ...
-
@NO_NAME 仅仅因为你可以并不意味着你应该。我在告诉他他应该怎么做;)