【发布时间】:2014-01-23 03:03:44
【问题描述】:
在下面的函数中,我想获取一个向量 objects 并返回该向量的其中一个元素的 副本。由于下面的代码编译正确,我假设迭代器 copy_objects.back() 被自动取消引用。但我不确定。 return 语句中发生了什么?
MyObject best(vector<MyObject>& objects) {
vector<MyObject> copy_objects = objects;
sort(copy_objects.begin(), copy_objects.end(), compare_MyObject_func);
return copy_objects.back();
}
我知道还有其他方法可以完成手头的简单任务,但我很想知道这个示例中发生了什么。
后续问题...
使用上面best函数的定义,我得到以下编译错误:
error: invalid initialization of non-const reference of type ‘std::vector<MyObject>&’ from an rvalue of type ‘std::vector<MyObject>’
bestObject = best(myfunction(objects));
^
相关类型声明在哪里:
MyObject bestObject;
vector<MyObject> objects;
vector<MyObject> myfunction(vector<MyObject>&);
我的直觉告诉我这个错误与上面的原始问题有关。但是,我不明白问题是什么。
【问题讨论】:
标签: c++ reference iterator return