Message类 + Folder类
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<algorithm>
using namespace std;
class Folder;
class Message
{
friend class Folder;
friend ostream& operator<<(ostream&, const Message&);
friend void swap(Message&, Message&);
public:
explicit Message(const string& s = string()) :contents(s), Folders(set<Folder*>()) {}
Message(const Message&);
Message& operator=(const Message&);
~Message();
// 这两个才是一般情况下使用的成员函数 保存/移除
void save(Folder&);
void remove(Folder&);
private:
string contents;
set<Folder*> Folders;
// 拷贝成员,析构函数需要用的工具函数
void add_to_Folders(const Message&);
void remove_from_Folders(); // 双向删除
// used by Folder class to add self to this Message's set of Folder's
void addFloder(Folder* f) { Folders.insert(f); }
void removeFolder(Folder* f) { Folders.erase(f); }
};
cl