#include #include using namespace std; // ノートクラス. class Notebook { private: string* note; // ノートの本文. int pages; // ノートの総ページ数. public: // ノートクラスのコンストラクタ. Notebook() { pages = 0; note = NULL; } Notebook(int pp) { note = new string[pages=pp]; } // ノートクラスのデストラクタ 用意したノートを削除. ~Notebook() { delete [] note; } // ノートを読む 指定がなければ最初のページ(1ページ目)を読む. string Read(int p = 1) const; // ノートに書く 指定がなければ最初のページ(1ページ目)に書く. void Write(string, int p = 1); }; // ノートを読む. string Notebook::Read(int p) const { p--; // ノートは1ページ目が最初のページ. if (p >= 0 && p < pages) { if (note[p].empty()) return "This page is empty."; return note[p]; // noteの内容を返す. } else return "Cannot read: out of pages."; // ページ外. } // ノートに書く. void Notebook::Write(string str, int p) { p--; // ノートは1ページ目が最初のページ. if (p >= 0 && p < pages) note[p] = str; // noteに代入する. else cerr << "Cannot write: out of pages." << endl; // ページ外. } int main() { // ノートクラスのオブジェクト 10ページ分を用意. Notebook notebook(10); // 最初のページ(1ページ目)に書き込む. notebook.Write("This is a notebook."); // 2ページ目に書き込む. notebook.Write("This notebook is good.", 2); // 最初のページ(1ページ目)を読む. cout << notebook.Read() << endl; // 2ページ目を読む. cout << notebook.Read(2) << endl; // 3ページ目を読む 何も書いてないけどね. cout << notebook.Read(3) << endl; // 0ページ目に書き込む...えっ! 0ページなんてないよ! notebook.Write("This page is bad.", 0); // 0ページ目を読む...0ページってどこだい? cout << notebook.Read(0) << endl; return 0; }