我正在为Minesweeper游戏创建一个类。该类不带任何参数。私人会员在课堂上宣传。我的目标是初始化一个二维向量的int。
using namespace std;
class Minesweeper {
public:
//This class takes no parameters
//Other methods will be here
private:
int rows = 20;
int cols = 20;
vector < vector <int>> theBoard(rows, vector<int>(cols));
};
我收到的编译错误如下:(两者都在向量初始化的行中)
我不明白上述错误。我相信我在创建二维向量时使用了正确的语法。将不胜感激任何帮助。
答案 0 :(得分:2)
在您的班级中添加构造函数。例如,
class Minesweeper
{
public:
Minesweeper()
: rows(20),
cols(20),
theBoard(rows, vector<int>(cols))
{
}
private:
int rows, cols;
vector<vector<int>> theBoard;
};
答案 1 :(得分:0)
这是一个&#34; MVP&#34; (最令人烦恼的解析)例子。有关该问题的更多信息,请参阅此问题已被复制的问题。
但是,我仍然在这里就如何正确初始化theBoard
给出答案,因为通常情况下,你会写这个:
vector<vector<int>> theBoard{rows, vector<int>{cols}};
但这不起作用,因为在使用初始化列表时,rows
无法隐式转换为size_t
。所以你需要这个:
vector<vector<int>> theBoard{static_cast<size_t>(rows), vector<int>{cols}};
您可以将rows
和cols
从int
改为size_t
,但不建议使用size_t
(或无符号整数)一般而言)数量。 (vector
使用无符号整数作为其大小几乎是C ++中的语言缺陷,现在无法修复,因为它会破坏太多代码。)