У меня есть простой пример:
void Message::move_Folders(Message *m) {
m_folders = std::move(m->m_folders);
for (auto f : m_folders) {
f->removeMessage(m);
f->addMessage(this);
}
m->m_folders.clear();
}
Эта функция может перемещать элемент «папки» из одной в другую. Итак, я хочу знать: нужно ли предоставить функцию назначения перемещения для «папок»?
folders &operator=(folders &&f) {
...
}
Что произошло при назначении ссылки на rvalue для lvalue? Это все еще операция копирования? (Полагаю, что нет.)
Примечание: папки - это набор объектов Folder. Сообщение может принадлежать многим папкам. Таким образом, сообщение содержит набор папок. Папка также имеет член messages
. Папка может содержать много сообщений. Это немного сложно.
Это определение Message
и Folder
:
class Message {
public:
// constructor and destructor
...
private:
std::set<Folder *> m_folders;
...
};
class Folder {
friend class Message;
//constructor and destructor
...
private:
std::set<Message *> m_messages;
};
Спасибо