在c++类中创建二维矢量
Creating 2-dimensional vector in class 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;
。
:
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++中,当你声明一个类时,没有代码正在运行/生成。您必须在构造函数中初始化它们。
应该在类构造函数中初始化成员,而不是在声明中初始化。以下内容似乎有任何不对的地方:
vector<int> row(5, 0);
vector<vector<int> > puzzle(9, row);
当row
和puzzle
为函数时,参数应为类型。如果它们是成员变量-在类构造函数中初始化它们
不能将可变成员初始化为类定义本身的一部分。在构造函数中赋值
// ....
Grid()
{
row.resize(5,0) ;
puzzle.resize(9,row) ;
}
private:
vector<int> row;
vector<vector<int> > puzzle ;
// ..
相关文章:
- 将二维矢量传递给类
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 带结构的二维矢量:如何存储元素
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- C++ 中动态二维数组的访问冲突
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 二维矢量数据成员
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组