c++ - 在方法上调用方法 C++

标签 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,但在第二次 add() 之后,它不会被保存。这是为什么?

最佳答案

add 按值返回,这意味着它将返回一个从 *this 复制的新临时 list_sorter,并且该临时值没有任何内容处理原始对象。

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

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;
}

关于c++ - 在方法上调用方法 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44688287/

相关文章:

C++模板C字符串参数

c++ - 未按描述收到事件通知

c - 故意返回无效值或类型

java - 返回 CompletableFuture<Void> 还是 CompletableFuture<?>?

c# - 在方法返回上使用隐式类型语法

C++11 可变参数模板

c++ - GDB : print contents of vector

c++ - "Ill-defined for-loop - loop executes infinitely"(MSVC C6295)

java - 为什么缺席返回类型没有编译错误

c++ - 获取重载成员函数的返回类型