13.33 save和remove需要把给定Folder的指针从folders中添加或删除,如果参数是Folder,则操作的是形参的指针,不是原始Folder的指针,必须用引用才能得到原始Folder的指针;另外还要将当前Message的指针从Folder的messages中添加或删除,就需要改变Folder的内容,因此不能用const。
13.34 头文件:Folder.h
#ifndef FOLDER_H
#define FOLDER_H
#include <set>
using namespace std;
class Folder;
class Message {
friend void swap(Message&, Message&);
friend class Folder;
public:
explicit Message(const string &str = ""):
contents(str) { }
Message(const Message&);
Message& operator=(const Message&);
~Message();
void save(Folder&);
void remove(Folder&);
void debug_print();
private:
string contents;
set<Folder*> folders;
void add_to_Folders(const Message&);
void remove_from_Folders();
void addFolder(Folder*);
void remFolder(Folder*);
};
class Folder {
friend void swap(Message&, Message&);
friend class