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,但在第二次添加()之后它不会被保存。那是为什么?
答案 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;
}