ostream
operator <<
具体的には、基本クラスから 2 つの派生クラスを使用できるようにしたいと考えています。
私が作成しているプログラムは、「仮想ストア」のさまざまな「製品」の製品詳細を印刷することになっています。製品の中には、2 種類の本があります。これらの各本は、独自のものを保持することになっています。
ID number
Author
NumberOfPages
Year
さらに、タイプChildrensBook
は最低年齢を保持するTextBook
必要があり、等級を保持する必要があります。
私はクラスを定義Book
し、それから派生したクラスChildrensBook
とTextBook
. 私の質問は、 を使用ostream
operator <<
して情報を印刷することについてです。
Book クラスで一般的な << 関数を定義して、両方の派生クラスに共通するすべての情報を出力し、派生クラスの << の再定義でそれを参照できますか?
例えば、
//The parent class
ostream& operator<<(ostream& bookOutput, const Book& printBook) {
return bookOutput << printBook.ID << "Name " << printBook.name << "year:" << printBook.year";
}
そして、どういうわけか派生クラスで:
//The derived classes
ostream& operator<<(ostream& TextBookOutput, const TextBook& printTextBook) {
return TextBookOutput << "TextBook: "
<< "[Here is where I want to print out all the details of the book that are members of the base class]" << "Grade:" << printTextBook.grade;
}
したがって、私の質問は次のように要約できると思います: 子演算子内から親演算子を呼び出すことはできますか? もしそうなら、どの構文を使用すればよいですか?
私が思いついたもう 1 つのアイデアは、親の print 演算子を使用する子用の関数を作成し、子の print 演算子内からその関数を呼び出すことです。つまり、再定義中にオペレーターを呼び出そうとしたのではなく、親オペレーターを使用し、子オペレーターを個別に再定義する必要があります。