我想在下面的类上做方法链接Point
。
#include <iostream>
class Point {
public:
Point(int x, int y): _x(x), _y(y) {}
Point& moveX(int x);
Point& moveY(int y);
Point& print() const;
...
};
...
Point& Point::print() const {
std::cout << "(" << _x << "," << _y << ")" << std::endl;
return *this; // Compile fails
}
print()
我认为标记为成员函数是有意义的,const
因为它只是打印内部成员。但是,我想在非常量和常量函数之间进行方法链接,如下所示。
int main() {
Point p(1,1);
p.moveX(10).print().moveY(11); // method chaining
}
所以我必须以非常量返回this
,但编译失败,因为据我了解,成员被标记为const
包含this
在 const 成员函数中。
在这种情况下有没有办法进行方法链接?