C++ 调用“(std::vector

C++ 调用“(std::vector,c++,C++,我的错误: Matrix.cpp:13:27: error: no match for call to ‘(std::vector<std::vector<int> >) (int, std::vector<int>)’ M(3, vector<int>(3, 0)); 我的Matrix.h文件的一部分 vector<vector<int> > M; my Matrix.cpp文件的一部分 Matrix::Ma

我的错误:

Matrix.cpp:13:27: error: no match for call to ‘(std::vector<std::vector<int> >) (int, std::vector<int>)’
     M(3, vector<int>(3, 0));
我的Matrix.h文件的一部分

vector<vector<int> > M;
my Matrix.cpp文件的一部分

Matrix::Matrix() {
M(3, vector<int>(3, 0));
}

我不太确定是否必须为我的.cpp文件在m前面写vector>。此构造函数的总体目标是通过二维向量创建3x3矩阵,并将矩阵中的所有元素指定为0

语法错误,如果要在初始值设定项列表中初始化M,应为:

Matrix::Matrix() : M(3, vector<int>(3, 0)) // <---
{}

感谢您的响应,但是为什么您不将M放在大括号内呢?数据成员是在执行{}中的代码之前创建的,因此M可以由vector的默认构造函数构造,它不带任何参数,或者您可以调用vectorint elem,在初始值设定项列表中调用t elem ctor。在{}中,您可以通过赋值操作修改M。@注意,您还可以编写M.resize3,vector3,0;在构造函数主体中,但是这个答案中的解决方案更好。了解更多详细信息。