我在课堂上看到一个朋友的通知:
void show_results(Book& foreign_books) {
int total_books
total_books = foreign_books.getBooksNumber();
cout << total_books << endl;
}
这是一个很好的课程定义吗?
class Book{
public:
Book();
int getBooksNumber();
};
ps:我是用手机写的,我不能检查太多的文件(我也是新手)。我需要你的确认。 TY
答案 0 :(得分:4)
很难说出你在问什么。但是,让我提出一些批评。也许这些会有所帮助。
show_results方法应该是const-correct。这意味着你应该将foreign_books作为const传递:
const Book& foreign_books
这样,如果您尝试在方法中修改foreign_books,编译器会抱怨。
正如mgb指出的那样,您的图书课程将无法使用,因为show_results方法需要图书,而不是图书。但是一旦你解决了这个问题,你可能也想让getBooksNumber更正确:
int getBooksNumber() const;
你没有告诉我们你在这里想要完成什么,所以很难判断你是否接近正确的做法。
最后,你错过了show_results方法中的分号:
void show_results(Book& foreign_books) {
int total_books; // **here**
total_books = foreign_books.getBooksNumber();
cout << total_books << endl;
}
答案 1 :(得分:1)
除了Books和Book不相同(typ0)
你必须在Books中有一些数据成员来存储数字,以及生成它的某种方式 您可能还需要某种工厂来为每个Books()
创建一个唯一的编号答案 2 :(得分:0)
我不确定您是否尝试将唯一编号与每本书相关联,或者您是否正在跟踪到目前为止构建的Book对象的总数。如果是前者,那么你应该在Book类中声明一个成员变量说bookNumber,而在getBooksNumber()中你应该返回分配给bookNumber变量的值。如果将getBooksNumber()作为常量函数并且使用常量对象调用此函数,则会更好。
如果以后是你要跟踪到目前为止构建的Book对象总数的情况,那么你应该有一个静态数据成员来跟踪它,你也可以使getBooksNumber()也是静态的,并且可以调用getBooksNumber()没有调用对象。