本文主要是介绍c++ primer 13.4,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#pragma once#include <string>
#include <set>
#include <iostream>class CFolder;class CMessage
{public:CMessage(const std::string &strMsg = "");// 复制构造函数CMessage(const CMessage& refObj);CMessage & operator=(const CMessage &rhs);public:void save(CFolder &folder);void remove(CFolder &folder);private:void put_msg_in_folers(const std::set<CFolder*> &);void remove_msg_from_folders();private:std::string m_strMsg; // 消息内容std::set<CFolder*> m_setlpFolder;
};class CFolder
{
public:CFolder();~CFolder();public:void add_msg(CMessage *lpMsg);void remove_msg(CMessage *lpMsg);private:CMessage *m_lpMsg;
};
#include "message.hpp"CMessage::CMessage(const std::string &strMsg):m_strMsg(strMsg)
{}CMessage:: CMessage(const CMessage &refObj):m_strMsg(refObj.m_strMsg), m_setlpFolder(refObj.m_setlpFolder)
{put_msg_in_folers(m_setlpFolder);
}CMessage & CMessage::operator=(const CMessage &rhs)
{if(&rhs != this){remove_msg_from_folders();m_strMsg = rhs.m_strMsg;m_setlpFolder = rhs.m_setlpFolder;put_msg_in_folers(rhs.m_setlpFolder);}return *this;
}void CMessage::put_msg_in_folers(const std::set < CFolder * > &rhs)
{std::set<CFolder*>::const_iterator sentry = rhs.begin();while(rhs.end() != sentry){(*sentry)->add_msg(this);++sentry;}
}void CMessage::remove_msg_from_folders()
{std::set<CFolder*>::const_iterator sentry = m_setlpFolder.begin();while(m_setlpFolder.end() != sentry){(*sentry)->remove_msg(this);++sentry;}
}void CMessage::save(CFolder & folder)
{folder.add_msg(this);std::cout << "消息加入到folder" << std::endl;
}// CFolder
CFolder::CFolder()
{}CFolder::~CFolder()
{}void CFolder::add_msg(CMessage * lpMsg)
{m_lpMsg = lpMsg;
}void CFolder::remove_msg(CMessage *lpMsg)
{}
这篇关于c++ primer 13.4的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!