В следующей функции я хочу взять вектор 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>&);
Моя интуиция подсказывает мне, что эта ошибка связана с исходным вопросом выше. Но я не понимаю, в чем проблема.