mailbox.h

来自「BigC++的源码」· C头文件 代码 · 共 107 行

H
107
字号
#ifndef MAILBOX_H
#define MAILBOX_H

using namespace std;

#include <string>
#include <queue>

class Message;

/**
   A mailbox contains messages that can be listed, kept, or discarded.
*/
class Mailbox
{
public:
   /**
      Create a mailbox object.
      @param a_passcode passcode number
      @param a_greeting greeting string
   */
   Mailbox(string a_passcode, string a_greeting);

   /**
      Check if the passcode is correct.
      @param a_passcode a passcode to check
   */
   bool check_passcode(string a_passcode) const; 

   /**
      Add a message to the mailbox.
      @param a_message the message to be added
   */
   void add_message(Message* a_message);

   /**
      Get the current message.
      @return the current message
   */
   Message* get_current_message() const;

   /**
      Remove the current message from the mailbox.
   */
   void remove_current_message();

   /**
      Save the current message.
   */
   void save_current_message();

   /**
      Change the mailbox's greeting.
      @param new_greeting the new greeting string
   */
   void set_greeting(string new_greeting);

   /**
      Change mailbox's passcode.
      @param new_passcode the new passcode
   */
   void set_passcode(string new_passcode);

   /**
      Get the mailbox's greeting.
      @return the greeting
   */
   string get_greeting() const;
private:
   queue<Message*> new_messages;
   queue<Message*> kept_messages;
   string greeting;
   string passcode;
};

inline Mailbox::Mailbox(string a_passcode, string a_greeting)
   : passcode(a_passcode), greeting(a_greeting)
{
}

inline bool Mailbox::check_passcode(string a_passcode) const
{
   return passcode == a_passcode;
}

inline void Mailbox::add_message(Message* a_message)
{
   new_messages.push(a_message);
}

inline void Mailbox::set_greeting(string new_greeting)
{
   greeting = new_greeting;
}

inline void Mailbox::set_passcode(string new_passcode)
{
   passcode = new_passcode;
}

inline string Mailbox::get_greeting() const
{
   return greeting;
}

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?