64,646
社区成员
发帖
与我相关
我的任务
分享
//Client.cpp
#include <iostream>
#include <string>
#include "Message.h"
#include "Folder.h"
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main() {
cout << "Input a line of character to test:" << std::flush;
string line;
getline(cin,line);
Message message(line);
Folder Fol;
message.save(Fol);
message.remove(Fol);
return 0;
}
//Message.h
#ifndef _MESSAGE_H
#define _MESSAGE_H
#include <string>
#include <set>
#include "Folder.h"
#define _FOLDER_H
class Folder;
class Message {
public:
Message(std::string line):
Message_str(line) { };
Message(Message&);
~Message();
Message& operator=(Message&);
void save(Folder&);
void remove(Folder&);
private:
std::set<Folder*> Folders;
std::string Message_str;
void Put_Msg_In_Folder(const std::set<Folder*>);
void Rem_Mes_From_Folder();
};
#endif
//Message.cpp
#include <string>
#include <set>
#include "Message.h"
Message::Message(Message& Mes):
Message_str(Mes.Message_str) Folders(Mes.Folders) {
Put_Mes_In_Folder(Folders);
}
Message::~Message() {
Rem_Mes_From_Folder(Folders)
}
Message& Message::operator=(Message& Mes) {
Message_str = Mes.Message_str;
Folders(Mes.Folders);
Put_Mes_In_Folder(Folders);
}
void Message::save(Folder& folder) {
Folder* pfol = &folder;
Folders.insert(pfol);
}
void Message::remove(Folder& folder) {
Folder* pfol = &folder;
for(std::set<Folder*>::iterator it = Folders.begin();
it != Folders.end();++it) {
if(*pfol == **it)
Folders.erase(*it);
}
}
void Message::Put_Mes_In_Folder(std::set<Folder*> Folders) {
for(std::set<Folder*>::iterator it = Folders.begin();
it != Folders.end();++it) {
(*it) -> addmes(this);
}
}
void Message::Rem_Mes_From_Folder(std::set<Folder*> Folders) {
for(std::set<Folder*>::iterator it = Folders.begin();
it != Folders.end();++it) {
(*it) -> remmes(this);
}
}
//Folder.h
#ifndef _FOLDER_H
#define _FOLDER_H
#include <string>
#include <set>
#include "Message.h"
#define _MESSAGE_H
class Message;
class Folder {
public:
void addmes(Message*);
void remmes(Message*);
private:
std::set<Message*> Messages;
};
#endif
//Folder.cpp
#include <set>
#include <string>
#include "Folder.h"
void Folder::addmes(Message* Message) {
Messages.insert(Message);
}
void Folder::remmes(Message* Message) {
Messages.erase(Message);
}