在方法c ++上调用方法

时间:2017-06-22 00:37:16

标签: c++ return-type

list_sorter add(std::list<typeOfList> &list){
    list_num++;
    lp.insert(lp.end(), list.begin(), list.end());
    lp.sort();
    list.clear();
    std::cout << list_num << std::endl;
    return *this;}

我在类模板中有这个小方法,主要是我这样称呼它:

si.add(lc).add(lb);

两次都会执行,它会增加list_num,但在第二次添加()之后它不会被保存。那是为什么?

2 个答案:

答案 0 :(得分:2)

config.guess按值返回,这意味着它将返回从$ find /usr -name 'config.guess' /usr/lib/rpm/redhat/config.guess /usr/share/automake-1.15/config.guess ... 复制的新临时add,并且临时与原始对象无关。

您可以将其更改为按引用返回。即。

list_sorter

答案 1 :(得分:0)

set

由于此函数返回值而不是引用,因此它会修改对象,然后返回对象的副本。后续调用发生在副本上。之后,该副本将被销毁,因为您从未将其分配给变量。

解决方案是:

list_sorter add(std::list<typeOfList> &list) {
    ...
    return *this;
}