【发布时间】:2012-11-10 12:36:34
【问题描述】:
我想在下面的 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 成员函数是有意义的,因为它只打印内部成员。但是,我想在非 const 和 const 函数之间进行方法链接,如下所示。
int main() {
Point p(1,1);
p.moveX(10).print().moveY(11); // method chaining
}
所以我必须将 this 作为非常量返回,但编译失败,因为据我了解,成员在 const 成员函数中标记为 const,包括 this。
有没有办法在这种情况下进行方法链接?
【问题讨论】:
-
键盘有问题吗?
-
我的问题有什么问题?
-
好吧,如果你声明一个方法
const你不能返回非常量引用/指针。否则,您可能会像在最后一行中所做的那样破坏 constness。这就是编译器不信任你的原因 -
@teerapap - 为什么不把它分成一系列的行呢?它将有助于调试
-
为什么不增加几行代码并坚持OOP?
标签: c++ method-chaining