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];
- 您正在尝试将
pointer to type
分配给一本书,这是无效的 - 您在value m_book [k]上使用
operator new
,而不是类型
您还拥有一系列书籍指针,并带有所有权语义。您不需要指针,您可以直接拥有一系列书籍。
一个简化的学生:
class Student
{
std::array<Book, 8> m_books;
size_t count = 0;
public:
void addBook(const Book & book)
{
m_book[count] = book;
++count;
}
}
没有指针,默认构造函数,默认驱动器
Book book = new m_book[k];
应该是
m_book[k]=new Book(book);