Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';变量名';不能出现在常量表达式c++;_C++_Compiler Construction_G++ - Fatal编程技术网

C++ ';变量名';不能出现在常量表达式c++;

C++ ';变量名';不能出现在常量表达式c++;,c++,compiler-construction,g++,C++,Compiler Construction,G++,有人知道这个错误的真正含义吗?我被一段似乎无法绕过的代码绊倒了。我试过用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

有人知道这个错误的真正含义吗?我被一段似乎无法绕过的代码绊倒了。我试过用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>
        }
    }
}
类网格
{
公众:
网格(整数x,整数y);
~Grid();
无效添加障碍物(int w,int h);
void toString();
国际**网格;
内部高度;
整数宽度;
};
网格::网格(intw,inth)
{
宽度=w;
高度=h;
常数int hprime=h*2;
常数int wprime=w*2;
网格=新整数[wprime][hpPrime];

对于(int x=0;x您不能使用
new
来分配二维数组,但您可以如下更改有问题的行:

  grid = new int*[wprime];
  for (int i = 0 ; i < wprime ; i++)
      grid[i] = new int[hprime];
然后像这样索引它

grid[A*wprime + B]
您通常会像这样索引它

grid[A][B]

它看起来甚至不需要是
const
。您没有修改它,它只是一个函数范围。您可以使用new来分配二维数组,但只有第一个维度是可变的。
new Grid[i][3]
很好,
new Grid[3][i]
不是。所以实际上您分配的是一维网格数组[3] ,但这就是C/C++多维数组的全部内容。
grid[A][B]