Messages的例子
13.33 13.36 13.37
Message.h
#ifndef MESSAGE_H
#define MESSAGE_H
#include<iostream>
#include<string>
#include<set>
#include"Folder.h"
using namespace std;
class Folder;
class 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 addFolder(Folder*);
void remFolder(Folder*);
void swap(Message&,Message&);
private:
string contents;
set<Folder*> folders;
void add_to_Folders(const Message&);
void remove_to_Folders();
}; #endif
Message.cpp
#include"Message.h" void Message::save(Folder &f)
{
folders.insert(&f);
f.addMsg(this);
} void Message::remove(Folder &f)
{
folders.erase(&f);
f.remMsg(this);
} void Message::add_to_Folders(const Message& m)
{
for(auto f:m.folders)
f->addMsg(this);
} void Message::remove_to_Folders()
{
for(auto f:folders)
f->remMsg(this);
} Message::Message(const Message &m):contents(m.contents),folders(m.folders)
{
add_to_Folders(m);
} Message& Message::operator=(const Message& m)
{
remove_to_Folders();
contents=m.contents;
folders=m.folders;
add_to_Folders(m);
return *this;
} Message::~Message()
{
remove_to_Folders();
} void Message::addFolder(Folder* f)
{
folders.insert(f);
} void Message::remFolder(Folder* f)
{
folders.erase(f);
}
void Message::swap(Message &lhs,Message &rhs)
{
using std::swap;
for(auto f:lhs.folders)
f->remMsg(&lhs);
for(auto f:rhs.folders)
f->remMsg(&rhs);
swap(lhs.folders,rhs.folders);
swap(lhs.contents,rhs.contents);
for(auto f:lhs.folders)
f->addMsg(&lhs);
for(auto f:rhs.folders)
f->addMsg(&rhs);
}
Folder.h
#ifndef FOLDER_H
#define FOLDER_H
#include<iostream>
#include<set>
#include<string>
using namespace std;
class Message;
class Folder
{
friend class Message;
private:
set<Message*> msg;
public:
void addMsg(Message*);
void remMsg(Message*);
};
#endif // FOLDER_H
Folder.cpp
#include"Folder.h"
#include"Message.h"
void Folder::addMsg(Message *m)
{
msg.insert(m);
} void Folder::remMsg(Message *m)
{
msg.erase(m);
}
Messages的例子的更多相关文章
- 网络标准之:永远是1.0版本的MIME
目录 简介 MIME详解 MIME头 MIME-Version Content-Type Content-Disposition Content-Transfer-Encoding Encoded-W ...
- Kafka副本管理—— 为何去掉replica.lag.max.messages参数
今天查看Kafka 0.10.0的官方文档,发现了这样一句话:Configuration parameter replica.lag.max.messages was removed. Partiti ...
- Delphi多线程的OnTerminate属性(附加一个关于临界区线程同步的例子)
首先看TThread源码中关于OnTerminate的代码: public .... property OnTerminate: TNotifyEvent read FOnTerminate writ ...
- jquery:validate的例子
该文档转载自 http://ideabean.javaeye.com/blog/363927 官方网站 http://bassistance.de/jquery-plugins/jquery-plug ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- [PHP] - Laravel - 列表、新增、修改、删除例子
前言 Laravel默认是自带了CURD的功能,使用路由的Route::resource可以做到. 但真正的项目中,这往往不是我们所需要的.因为一个项目会有比较复杂的计算.验证等功能. 下面是对项目中 ...
- Win32 OpenGL标准例子
在VS2008的MSDN中有一个标准的OpenGL例子,记录如下: /* * Example of a Win32 OpenGL program. * The OpenGL code is the s ...
- Deep learning:四十四(Pylearn2中的Quick-start例子)
前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn ...
随机推荐
- 第 6 章 抽象工厂模式【Abstract Factory Pattern】
以下内容出自:<<24种设计模式介绍与6大设计原则>> 好了,我们继续上一节课,上一节讲到女娲造人,人是造出来了,世界时热闹了,可是低头一看,都 是清一色的类型,缺少关爱.仇恨 ...
- /etc/passwd 与 /etc/shadow
/etc/passwd是用户数据库,其中的域给出了用户名.加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件.影子口令文件将/etc/pas ...
- [wikioi]线段覆盖 2
http://wikioi.com/problem/3027/ # 有个小错误调了半天,最终发现sort(line, line+N)错了,后面那个是exclusive的,所以要line+N+1.# 按 ...
- CrystalDiskMark 的使用方法
CrystalDiskMark 是一个测试你的硬盘或者存储设备的小巧硬盘测试工具.简单易于操作的界面让你随时可以测试你的存储设备,测试存储设备大小和测试数字都可以选择,还可测试可读和可写的速度. 具体 ...
- delphi中EmbeddedWB网页html相互调用(二)
我们可以通过控件 EmbeddedWB_D5-D2010_Version_14.69.1 来响应html事件,还可以自定义html响应哪些html元素. 控件下载 点击下载 里面有demos文件夹大家 ...
- C# 验证码识别基础方法及源码
先说说写这个的背景 最近有朋友在搞一个东西,已经做的挺不错了,最后想再完美一点,于是乎就提议把这种验证码给K.O.了,于是乎就K.O.了这个验证码.达到单个图片识别时间小于200ms,500个样本人工 ...
- [FJSC2014]滑行
[题目描述] 首长NOI惨跪,于是去念文化课了.现在,他面对一道物理题. 现在有一个小滑块可以在地面上滑行,地面上被划分成不同的区域,使得小滑块在不同的区域内部有一个不同的速度上限. 小滑块在(0,0 ...
- ☀【jQuery插件】DOM 延迟渲染
test.html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&q ...
- 【转】修改eclipse中的M2_REPO变量
转自:http://superseven.iteye.com/blog/1625429 从eclipse中增加了maven2的插件之后,maven默认的本地库的路径是${user}/.m2/repos ...
- android报错——java.lang.ClassNotFoundException[android]
E/AndroidRuntime(1875): Caused by: java.lang.ClassNotFoundException:XXXXX in loader dalvik.system ...