C++ 如何在类中使用向量的()初始值设定项?
此代码给出一个错误C++ 如何在类中使用向量的()初始值设定项?,c++,c++11,vector,C++,C++11,Vector,此代码给出一个错误 class Board { vector<vector<int>> sudoku(9, vector<int>(9)); // Error; Expected a parameter declarator }; 课程板{ 向量数独(9,向量(9)); //错误;应为参数声明符 }; 如何修复它?在进行类内初始化时,不能使用括号直接初始化成员。必须使用大括号({})或相等的括号(=…;)初始化成员。这意味着您需要将其重构为 vecto
class Board {
vector<vector<int>> sudoku(9, vector<int>(9));
// Error; Expected a parameter declarator
};
课程板{
向量数独(9,向量(9));
//错误;应为参数声明符
};
如何修复它?在进行类内初始化时,不能使用括号直接初始化成员。必须使用大括号(
{}
)或相等的括号(=…;
)初始化成员。这意味着您需要将其重构为
vector<vector<int>> sudoku = vector<vector<int>>(9, vector<int>(9));
// or
vector<vector<int>> sudoku{9, vector<int>(9)};
向量数独=向量(9,向量(9));
//或
向量数独{9,向量(9)};
单向:
class Board {
vector<vector<int>> sudoku = vector<vector<int>>(9, vector<int>(9));
};
课程板{
向量数独=向量(9,向量(9));
};
第二种方式:
class Board {
public:
Board() : sudoku(9, vector<int>(9)) {}
private:
vector<vector<int>> sudoku;
};
课程板{
公众:
Board():数独(9,向量(9)){}
私人:
矢量数独;
};
矢量数独;Board():数独(9,向量(9)){}
?或向量数独{9,向量(9)}代码>第一个选项有效!然而,第二个选项仍然会给出一个错误。谢谢你在用什么编译器?我尝试了4…第二种(也是推荐的)方法:为什么是推荐的方法?许多人更喜欢类内初始化,这样就不需要在所有构造函数中重复初始化器。@NathanOliver它使代码更具组织性,并将代码分成更具逻辑性的部分。我认为使用“推荐”只是一种意见;答案应该尽量停留在事实上。如果总是相同的初始化,并且我有10个不同的构造函数,我肯定不会把它放在10个不同构造函数的初始值设定项列表中。所以后者被“推荐”似乎至少有点固执己见。@walnut好吧,我不能和一本书争论,修正了。谢谢