在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 ++中,当你声明一个类时,没有代码被运行/生成。 你必须在你的构造函数中初始化它们。
上一篇: dimensional vector in class C++
下一篇: How can I iterate over an array of json object in Reactjs?