我知道这个问题以前曾被问过;但是,我不了解解决方案。我正在尝试创建std :: vector的子类,它能够继承成员函数(例如push_back
),但不能继承运算符(例如=
)。
从this example起,它似乎应该自动发生……向量类是否不同?
#include <iostream>
#include <vector>
using namespace std;
template <class T>
class FortranArray1 : public std::vector<T> {
public:
T & operator()(int row)
{
return (*this)[row-1];
}
};
int main()
{
vector <double> y;
y = {3}; // works
vector <double> z = y; //works
FortranArray1<double> x;
x = {3}; // doesn't work
x.push_back(3); // works
cout << y[0] << x[0] << ", " << x(1) ;
return 0;
}
答案 0 :(得分:2)
您可以使用using
来介绍基类的operator=
template <class T>
class FortranArray1 : public std::vector<T> {
public:
using std::vector<T>::operator=;
T & operator()(int row){return (*this)[row-1];}
};
您可能还需要using std::vector<T>::vector;
来介绍它的构造函数