求教 c++ primer 第13章的程序的问题
求教 c++ primer 第13章的程序的问题我定义了两个类,一个叫Folder ,一个叫Message。
然后Message类的头文件里包含了Folder头文件。
但是我在message中用folder为什么就是错误
程序代码:
void Message::save(Folder &a) { a.addMsg(this); folder.insert(&a); }
类外定义,内类声明过了。结果
void Message::save(Folder &a) { a.addMsg(this); folder.insert(&a); }
#ifndef FOLDER_H #define FOLDER_H #include<set> #include"Message.h" class Folder{ public: void addMsg(Message *); void remMsg(Message *); private: std::set<Message*> message; }; void Folder::addMsg(Message *a) { message.insert(a); } void Folder::remMsg(Message *a) { message.erase(a); } #endif
#ifndef MESSAGE_H #define MESSAGE_H #include<string> #include<set> #include"Folder.h" using std::string; class Message{ public: Message() = default; Message(string a) :content(a) { }; Message(const Message&); Message& operator=(const Message&); ~Message(); void swap(Message&, Message&); void save(Folder&); void remove(Folder&); void add_to_folder(const Message&); void rem_to_folder(); private: string content; std::set<Folder*> folder; }; Message::Message(const Message& a) { content = a.content; folder = a.folder; add_to_folder(a); } Message& Message::operator = (const Message& a) { rem_to_folder(); content = a.content; folder = a.folder; add_to_folder(a); return *this; } void Message::add_to_folder(const Message& a) { for (auto use : a.folder) { use->addMsg(this); } } void Message::rem_to_folder() { for (auto use : folder) { use->remMsg(this); } } Message::~Message() { rem_to_folder(); } void Message::swap(Message &a, Message &b) { Message mid; } void Message::save(Folder &a) { a.addMsg(this); folder.insert(&a); } void Message::remove(Folder &a) { a.remMsg(this); folder.erase(&a); } #endif