任何人都有任何线索这个错误可能意味着什么?我正在绊倒一些似乎无法绕过它的代码。我用h * 2代替hprime尝试了它,只用w * 2而不是wprime。每次我得到相同的编译器(g ++编译器)错误:
grid.cpp:在构造函数'Grid :: Grid(int,int)'中:
grid.cpp:34:错误:'hprime'不能出现在常量表达式
中(编译器并不总是说hprime,它会说出任何变量,无论是h还是hprime或width)。任何帮助将不胜感激!
class Grid
{
public:
Grid(int x, int y);
~Grid();
void addObstacle(int w, int h);
void toString();
int** grid;
int height;
int width;
};
Grid::Grid(int w, int h)
{
width = w;
height = h;
const int hprime = h*2;
const int wprime = w*2;
grid = new int[wprime][hprime];
for(int x=0;x<wprime;x++) {
for (int y=0; y<hprime;y++) {
grid[x][y] = 0;<br>
}
}
}
答案 0 :(得分:22)
您无法使用new
分配二维数组,但可以更改违规行,如下所示:
grid = new int*[wprime];
for (int i = 0 ; i < wprime ; i++)
grid[i] = new int[hprime];
如果它 不是多维的,那么你可以做:
grid = new int[wprime*hprime];
并将其编入索引
grid[A*wprime + B]
您通常会将其编入索引,如
grid[A][B]