新的运算符帮助、类型说明符和其他错误

new operator help, type-specifier and other errors

class Student
{
    Book* m_book[8];

public:
    Student()
    {
        for ( int i = 0; i < 8; i++){
            m_book[i] = NULL;
        }
    }

    ~Student()
    {
        for ( int j = 0; j < 8; j++){
            delete m_book[j];
        }
    }

    void addBook(Book& book)
    {
        int k = 0;
        while(m_book[k] != NULL){
            k++;
        }
            Book book = new m_book[k];

    }
};

为什么 addBook 成员函数不起作用?

   Book book = new m_book[k]; 

应该是

   m_book[k]=new Book(book);         

这条线有很多问题 Book book = new m_book[k];

  • 您正试图将 pointer to type 分配给一本无效的图书
  • 您在值 m_book[k] 上使用 operator new,而不是类型

您还有一组书籍指针,具有所有权语义。你不需要指针,你可以直接拥有一个 Books 数组。

一个大大简化的学生:

class Student 
{
    std::array<Book, 8> m_books;
    size_t count = 0;
public:
    void addBook(const Book & book)
    {
        m_book[count] = book;
        ++count;
    }
}

没有指针,默认构造函数,默认析构函数