【发布时间】:2016-03-12 11:31:04
【问题描述】:
class foo{
private:
int map[SCENE_WIDTH * SCENE_HEIGHT];
}
问题是我还不知道场景宽度,我想做类似的事情:
int map[];
void setSize(int s){
map[5];
}
我知道这样做的唯一方法是执行 int *map 然后 map = new int[3] 但我将使用动态内存,我必须稍后将其删除。如何像“第一种方法”那样做?
【问题讨论】:
-
改用
std::vector<int>和resize()。 -
简短的版本是,你不能。数组的大小必须是编译时常量。 (Gcc 和 clang 对运行时大小的数组进行了扩展,但我认为这不适用于类成员)。这里正常的做法是使用标准库组件
std::vector。 -
那么如果我必须通过向量会更糟,因为我需要一个迭代器
-
@DanielRocaLopez 我不明白您对需要迭代器的抱怨?
vector访问与数组访问非常相似,您使用v[index]或行为与指针基本相同的迭代器。