繁体   English   中英

向 std::vector 添加成员<std::vector<int> &gt; class 在 C++ </std::vector<int>

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

我必须修改代码,以便可以将成员添加到 2D 向量。 代码以typedef vector<vector<int>> Matrix Matrix 开头,我将其替换为 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 调用适当的构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM