Оператор назначения копирования, вектор - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть этот вектор, который содержит значения (не в куче!)

std::vector<Dish> menu;

Я хочу реализовать оператор присвоения копии следующим образом:

    Restaurant &Restaurant::operator=(Restaurant &&other) {
    if (this == &other)
        return *this;
    open = other.open;

    menu = std::move(other.menu);
}

Я получаю эти ошибки / предупреждения:

        ^
/Users/avivlevitzky/CLionProjects/SPL-Project-1/Restaurant.cpp:49:10: note: in instantiation of member function 'std::__1::vector<Dish, std::__1::allocator<Dish> >::operator=' requested here
    menu = other.menu;
         ^
/Users/avivlevitzky/CLionProjects/SPL-Project-1/Dish.h:18:15: note: copy assignment operator of 'Dish' is implicitly deleted because field 'id' is of const-qualified type 'const int'
    const int id;

Что не так ??

1 Ответ

0 голосов
/ 14 ноября 2018

Это задание на перемещение, поэтому двигайте ваши объекты:

open = std::move(other.open);
menu = std::move(other.menu);

open или menu, вероятно, не позволяют копировать, следовательно, ошибка.

Вам не нужно очищать menu, потому что вы заменяете контент другим объектом.

...