【发布时间】:2026-01-15 00:15:01
【问题描述】:
我有这个代码:
class Something
{
private:
int m_value = 0;
public:
Something add(int value)
{
m_value += value;
return *this;
}
int getValue()
{
return m_value;
}
};
int main()
{
Something a;
Something b = a.add(5).add(5);
cout << a.getValue() << endl;
cout << b.getValue() << endl;
}
输出:
5
10
我想让add() 返回a 对象,这样第二个add() 就像(*this).add(5),但这不起作用。但是,b 很好(怎么样?)。我预计a 为 10,与b 相同。
那么,我在哪里错过了隐藏指针的使用?我应该怎么做才能使a.add(5).add(5) 将a 的m_value 更改为10?
【问题讨论】:
-
究竟是什么不起作用?你期望的输出是什么?
-
这个问题应该包含更多细节并澄清问题。
-
add返回Something实例的副本。您的下一个调用链会修改该临时副本。你想从add返回Something&吗? -
Something&评论是一个合理的猜测,但不幸的是我们正在猜测。您的代码不是将5添加到a吗?b不会被分配另一个5的值吗?你的输出是正确的,你没有解释什么“不起作用”。
标签: c++ this method-chaining