无法匹配对矢量的调用

时间:2016-12-16 16:38:01

标签: c++ c++11 vector

在我的课程中,我尝试创建无符号2d向量,然后在获取其大小后在构造函数中初始化它。这是我的班级:

class RobotWorld {
    private:
    int n;
    vector <vector<int>> v;
    public:
    RobotWorld (int n){
        n = n;

        v(n, vector<int>(n, n));
        for(int i = 0; i < n; ++i){
            v[i][0] = i;
        }
    }
};

当我这样做的时候,我收到一个错误:调用std :: vector不匹配。 你能否告诉我我的代码有什么问题以及如何改进它。

1 个答案:

答案 0 :(得分:6)

你很亲密。构造类时,所有成员都在成员初始化列表中初始化。这是您的初始化需要的地方。当你在构造函数体中执行它时,执行variable_name(stuff)尝试调用函数调用操作符而不是构造函数。这就是你得到编译器错误的原因,因为vector没有这样的运算符。我们可以将代码更改为

RobotWorld (int n) : n(n), v(n, vector<int>(n, n)){
    for(int i = 0; i < n; ++i){
        v[i][0] = i;
    }
}

现在nv都已正确初始化,然后您操纵向量。