C++ 如何调用父类differnet运算符

C++ 如何调用父类differnet运算符,c++,class,overloading,operator-keyword,C++,Class,Overloading,Operator Keyword,我想打电话给家长的班级接线员 class foo{ protected: int *data; public: int& operator[](int i); int operator[](int i)const; }; class goo : public foo{ int& operator[](int i) { foo::operator[](i); } int operator[

我想打电话给家长的班级接线员

class foo{
   protected:
     int *data;
   public:
     int& operator[](int i);
     int operator[](int i)const;
};

class goo : public foo{

    int& operator[](int i)
    {
       foo::operator[](i);
    }

    int operator[](int i) const
    {
       foo::operator[](i);
    }

};

但是只调用一个父操作符
int&operator[](int i)

我该如何修复它呢???

您真的跳过了goo类中第二个运算符的常量:

int operator[](int i) 

goo
const中也生成
int运算符[](inti)
。这甚至可以编译吗?您不能仅在返回类型上重载。
goo
中缺少
const
,因此您实际上有两个相同的签名。并且
返回也缺少
int*数据
行和课后
const\u cast
?为什么?这里只需要
static\u cast
。原始post中有错误,派生类中的两个运算符都是非常量。
int operator[](int i) 
#include <iostream>

using namespace std;

class foo{
   public:
     int& operator[](int i){ std::cout << "foo[] const" << std::endl; };
     int operator[](int i)const { std::cout << "foo[]" << std::endl; };
};

struct goo : public foo{

    int& operator[](int i)
    {
       foo::operator[](i);
    }

    int operator[](int i) const
    {
       foo::operator[](i);
    }

};

int main()
{
   goo g;
   g[1];
   const goo cg;
   cg[1];

   return 0;
}
sh-4.2$ main                                                                                                                                                  
foo[] const                                                                                                                                                   
foo[]