【发布时间】:2018-10-14 04:29:18
【问题描述】:
我需要从std::vector 继承所有函数,并且我想重载运算符 以创建一个完整的matrix 类。
没有太多关于这个主题的文档。
Matriz.h
#include <vector>
#include <iostream>
using namespace std;
template<typename T>
class Matriz:vector<T>
{
public:
using vector<T>::vector;
private:
}
Matriz.cpp
int main()
{
Matriz<int> dani;
dani.push_back(2); //Here is the error and I don`t know what it happens
}
当我想初始化它时,我得到了一个错误。
Severity Code Description Project File Line Suppression State
Error C2247 'std::vector<int,std::allocator<_Ty>>::push_back' not accessible because 'Matriz<int>' uses 'private' to inherit from 'std::vector<int,std::allocator<_Ty>>'
【问题讨论】:
-
你可能不想这样做
-
首先,从标准容器继承时要小心,它们不是为此而设计的。其次,你有
private继承。 -
我不认为从 vector 私有继承是个大问题。关于您的问题,您能否更具体地说明您遇到的问题?错误消息可以很好地指示问题。
-
试试
class Matriz: public vector<T> -
看看这个问题是否从
std::vector继承是个好主意:stackoverflow.com/questions/4353203/…
标签: c++ class c++11 inheritance stdvector