C ++继承运算符=

时间:2018-09-22 03:21:23

标签: c++ inheritance stdvector

我知道这个问题以前曾被问过;但是,我不了解解决方案。我正在尝试创建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;
}

1 个答案:

答案 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;来介绍它的构造函数