呼叫向量没有匹配

No match for call to vector

本文关键字:向量 呼叫      更新时间:2023-10-16

在我的班级中,我正在尝试创建未签名的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无匹配。您能告诉我我的代码有什么问题以及如何改进它。

你很接近。在构建类时,所有成员都在成员初始化器列表中初始初始化。这是您的初始化需要的地方。当您在构造函数主体中进行操作时,执行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都适当初始化,然后操纵向量。