Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在类中使用向量的()初始值设定项?_C++_C++11_Vector - Fatal编程技术网

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好吧,我不能和一本书争论,修正了。谢谢