我遇到了重载[]运算符的问题,并且在编译代码时遇到了问题。
过载定义double& Point::operator[](int index) { return index ? y : x; }
类Point '类Point { public://声明构造函数(3)Point();
Point(double * arr);
//Point(double x_input, double y_input);
Point(const Point& input);
Point(const double x_input, const double y_input);
// declare overloaded operators (8 member functions)
double& operator[](int index);
Point operator+=(double num);
Point operator+=(const Point& pointee);
Point operator++(int);
Point operator++();
Point operator--(int);
Point operator--();
私有:双x;//一个点的x坐标乘以y;//点的y坐标};'
错误:error
我不知道为什么我会遇到这个问题,我希望如果有人能阐明一些正在发生的事情。提前谢谢你。
我试过将const添加到重载及其返回类型中,但没有效果。
1条答案
按热度按时间mqkwyuun1#
该错误消息意味着为
Point
类型的常量对象调用了operator []
,但该运算符未声明为常量成员函数。向运算符再添加一个重载
如果运算符是在类定义之外的全局命名空间中定义的,则需要编写
如果运算符是在定义类的同一命名空间中定义的,则将
简单地说,定义它就像定义非常数运算符一样。