任何人都有这个错误可能意味着什么的线索吗?我绊倒了一些似乎无法解决的代码。我已经尝试使用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>
        }
    }
}

最佳答案

您不能使用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]

关于c++ - '变量名'不能出现在常量表达式C++中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1501768/

10-11 00:56