在 C++ 中向 std::vector<std::vector<int>> class 添加成员

Adding a member to std::vector<std::vector<int>> class in C++

我必须修改代码才能将成员添加到 2D 向量。 代码以 typedef vector<vector<int>> Matrix 开头,我将其替换为矩阵 class。 我尝试使用 :

vector<vector<int>> 继承
class Matrix: public vector<vector<int>> {
public:
    int myMember;
};

这样我实际上不必对源代码进行太多修改。 但是,如果我尝试 运行 :

Matrix mymatrix (4);

它引发错误:

modele.cpp:19:20: error: no matching function for call to 'Matrix::Matrix(int)'
  Matrix mymatrix (4);
                    ^
In file included from modele.cpp:8:0:
modele.h:6:7: note: candidate: Matrix::Matrix()
 class Matrix: public vector<vector<int>> {
       ^
modele.h:6:7: note:   candidate expects 0 arguments, 1 provided

默认情况下不继承构造函数,但可以在派生的 class 中使用它们,因为你必须这样做:

#include <vector>
#include <iostream>
class Matrix : public std::vector<std::vector<int>>{
    public:
        using vector::vector;
        int myMember;
};

int main(){
    Matrix data(1);
    std::vector row = {1,2,3,4,5};
    data.push_back(row);


    for(auto i: data){
        for(auto r : i){
            std::cout << r << std::endl;
        }
    }
}

这样编译器就会知道基础class中的所有构造函数。并将为您派生的 class.

调用适当的构造函数