我得到了一个特定的主要

int main() {

  Widget w;

  w.set(3).print().set(2).print();

  w.print();
}

并且我需要编写一个类 Widget,以便程序打印 3,2,2。

我最好的尝试 sofar 打印出令人失望的 3,2,3 :/
class Widget{
public:
  Widget(){m_i =0;};

  Widget(int i){m_i =i;};

  Widget set(int i){
    this->m_i = i;
    return *this;
    };

  Widget print(){
    std::cout<<this->m_i<<std::endl;
    return *this;
    };
  int m_i;
};

int main() {

  Widget w;

  w.set(3).print().set(2).print();

  w.print();
}

关于如何解决这个问题的任何想法?
感谢所有愿意提供一些建议的人:)

最佳答案

您缺少的是从您的函数返回的对象需要是一个引用,例如一个 Widget& ,而不是一个 Widget 。目前,您从每个 set() 或 print() 调用返回一个全新的拷贝,这意味着对该对象的任何进一步更改都不会应用于原始 w 对象。

关于c++ - 实现链接方法时打印的错误值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55361503/

10-17 01:40