C++ Primer 第五版 中文版 练习 13.35
题目:设计并实现对应的Folder类,此类应该保存一个指向Folder中包含的Message的set。
答:
个人实在想不出这个类需要的拷贝控制是什么……于是有了下面的类……
Folder.h
#pragma once
#include <set>
#include "Message.h"
class Message;
class Folder
{
// friend class Message;
public:
Folder(){}
//拷贝构造函数
Folder(const Folder&);
//拷贝赋值运算符
Folder& operator=(const Folder&);
//析构函数
~Folder();
void addMsg(Message *); //添加Message到本Folder
void remMsg(Message *); //从本Folder删除Message
private:
std::set<Message*> Messages; //本Folder包含的Message
void clear(); //清空Messages信息。
};
Folder.cpp
#include "Folder.h"
Folder::Folder(const Folder &f) :Messages(f.Messages)
{
}
Folder& Folder::operator=(const Folder &rhs)
{
Messages = rhs.Messages;
return *this;
}
Folder::~Folder()
{
}
void Folder::clear()
{
Messages.clear();
}
void Folder::addMsg(Message *m)
{
Messages.insert(m);
}
void Folder::remMsg(Message *m)
{
Messages.erase(m);
}