基本的C ++问题

时间:2009-11-27 19:35:07

标签: c++

我在课堂上看到一个朋友的通知:

    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

3 个答案:

答案 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()没有调用对象。