'undefine reference to'请教
//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_Hclass 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& 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_Hclass 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);}