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[]