class foo{
private:
int map[SCENE_WIDTH * SCENE_HEIGHT];
}
问题是我还不知道SCENE WIDTH,我想做点什么:
int map[];
void setSize(int s){
map[5];
}
我知道这样做的唯一方法是执行int * map然后map = new int [3]然后我将使用动态内存,我将不得不在以后删除它。怎么做就像“第一种方法”?
答案 0 :(得分:1)
int map[SIZE];
在堆栈上分配 ,此数组的大小必须在编译时知道,并且必须在此变量的声明中提及,因为否则语法map[5];
将被视为提取此数组的第六个值。
总而言之,你不能这样做,但你可以使用std::vector
来达到这个目的。
答案 1 :(得分:1)
无法在标准C ++中调整类似的数组。
相反,请使用std::vector
。例如;
#include <vector>
class foo
{
public:
foo(std::size_t size = 0) : map(size) {}; // initialises number of elements in map
void resize(std::size_t size)
{
map.resize(size);
};
private:
std::vector<int> map;
};
当vector<int>
类型的对象被破坏时,包含的foo
将被隐式销毁,并将释放它已分配的所有资源。
std::vector
以外的容器满足特定需求,但std::vector
在实践中是一个很好的默认选择。