在C ++类中的三维向量

我需要创建一个向量充满整数的向量。 但是,我不断得到错误:

错误:数字常量之前的期望标识符错误:数字常量之前的期望','或'...'

using namespace std;

class Grid {
  public:

  Grid();

  void display_grid();
  void output_grid();

  private:

  vector<int> row(5, 0);
  vector<vector<int> > puzzle(9, row);
  int rows_;
  int columns_;

};

您无法在声明它们的位置初始化成员变量。 在构造函数中使用初始化列表:

Grid::Grid()
  : row(5,0), puzzle(9, row),
    rows_(5), columns_(9)
{
}

C ++类的定义是有限的,因为你不能在声明它们的地方初始化内联成员。 这是一个耻辱,但它在C ++ 0x中已经得到了一定程度的修复。

无论如何,您仍然可以使用ctor-initializer语法提供构造函数参数。 您可能以前没有看到过,但是:

struct T {
   T() : x(42) {
      // ...
   }

   int x;
};

是你如何初始化一个成员,当你以前可能用int x = 42;尝试(并失败)时int x = 42;

所以:

class Grid {
  public:

  Grid();

  void display_grid();
  void output_grid();

  private:

  vector<int> row;
  vector<vector<int> > puzzle;
  int rows_;
  int columns_;
};

Grid::Grid()
  : row(5, 0)
  , puzzle(9, row)
{
  // ...
};

希望有所帮助。


你不能在类声明中初始化一个成员,除非它是const static ,因为在C ++中,当你声明一个类时,没有代码被运行/生成。 你必须在你的构造函数中初始化它们。

链接地址: http://www.djcxy.com/p/52063.html

上一篇: dimensional vector in class C++

下一篇: How can I iterate over an array of json object in Reactjs?