だから私はこのクラスを作りました:
class Book
{
public:
Book(string newTitle = "???", string newAuthor = "???");
virtual ~Book();
string getTitle();
string getAuthor();
void setTitle(string newTitle);
void setAuthor(string newAuthor);
virtual string allInfo();
private:
string title;
string author;
};
そして、私はと呼ばallInfo()
れる他の 2 つのクラスで関数をカバーするつもりでした。どちらも から継承しています。HardcoverBooks
AudioBooks
Book
これは、最初にクラス.cpp
の両方のクラスのファイルで行ったことです。AudioBook
string AudioBook::allInfo(){
stringstream newString;
newString<<"Title: "<<this->title<<endl<<"Author: "<<this->author<<endl
<<"Narrator: "<<this->narrator<<endl
<<"Length(in minutes): "<<this->length<<endl<<endl;
return newString.str();
}
そして、これはHardcoverBook
クラスで:
string HardcoverBook::allInfo(){
stringstream newString;
newString<<"Title: "<<this->title<<endl<<"Author: "<<this->author<<endl
<<"Pages: "<<this->pages<<endl<<endl;
return newString.str();
}
AudioBook
クラスがこれについて不平を言っていることを除いて、すべてがうまく機能しています。
include\Book.h||メンバー関数内 'virtual std::string AudioBook::allInfo()':| include\Book.h|41|エラー: 'std::string Book::title' は非公開です| mningsuppgiftIIB\src\AudioBook.cpp|27|エラー: このコンテキスト内| include\Book.h|42|エラー: 'std::string Book::author' は非公開です| mningsuppgiftIIB\src\AudioBook.cpp|27|エラー: このコンテキスト内| ||=== ビルドが終了しました: 4 つのエラー、0 の警告 ===|
しかしHardcoverBook
、不思議なことに、これについてはまったく文句を言いません。
私の質問:
これを機能させるにはどうすればよいですか?
allInfo()
(つまり、両方のクラスが独自の方法で関数を使用できるようにするため)なぜこのように機能しないのですか?
編集: これは私がやっている宿題です。要件の 1 つは、メンバー変数とプロパティを非公開にすることです。したがって、保護された機能は機能します。その人たちの称賛ですが、別のボーナス質問を追加します。
- プライベート メンバー変数を使用するにはどうすればよいですか?