所以我做了这门课:
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()
在另外两个类中介绍 -function 一个叫做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()'中:| 包括\Book.h|41|错误:'std::string Book::title' 是私有的| mningsuppgiftIIB\src\AudioBook.cpp|27|错误:在此上下文中| 包括\Book.h|42|错误:'std::string Book::author' 是私有的| mningsuppgiftIIB\src\AudioBook.cpp|27|错误:在此上下文中| ||=== 构建完成:4 个错误,0 个警告 ===|
但HardcoverBook
它根本没有抱怨这一点,这很奇怪。
我的问题:
我该怎么做才能完成这项工作?(即使两个类都能够以
allInfo()
自己的方式使用该功能)为什么它不能这样工作?
编辑:这是我正在做的一些作业,其中一个要求是使成员变量和属性私有。所以受保护确实有效,为那些家伙表示敬意,但我会添加另一个奖励问题:
- 如何使其与私有成员变量一起使用?