我正在尝试创建一个名为tableaux的对象类,这些对象本质上是无符号整数的向量的向量(它们类似于矩阵,但行可以是不同的长度),并使用我的一些算法。主要问题是我想从vector类继承这些对象的迭代器,但我不知道如何实现。
我已经阅读了几个相关的问题和答案,很容易让我公开继承std::vector>,但共识是由于STL容器没有虚拟析构函数等原因,这种方法是不好的。所以我决定通过组合来“继承”。这是我尝试实现的一个最小示例:
但是g++给我返回了这个错误: 类型 '
我已经阅读了几个相关的问题和答案,很容易让我公开继承std::vector>,但共识是由于STL容器没有虚拟析构函数等原因,这种方法是不好的。所以我决定通过组合来“继承”。这是我尝试实现的一个最小示例:
#include <vector>
#include <iostream>
class tableau {
private:
std::vector<std::vector<unsigned int> > rep;
public:
using std::vector<std::vector<unsigned int> >::iterator;
void push_back(std::vector<unsigned int> const& new_row) {
rep.push_back(new_row);
}
};
int main() {
tableau t1;
std::vector<unsigned int> row1(10);
std::vector<unsigned int> row2(8);
t1.push_back(row1);
t1.push_back(row2);
tableau::iterator it = t1.begin();
for ( ; it != t1.end(); ++it) {
//display rows of tableau
}
return 0;
}
但是g++给我返回了这个错误: 类型 '
std::vector<std::vector<unsigned int> >
' 不是类型 'tableau' 的基类。由于我刚开始学习C ++,所以如果我做错了什么,请温柔点。如果你需要更多我编写的实际代码,请告诉我。