新的运算符帮助、类型说明符和其他错误
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;
}
}
没有指针,默认构造函数,默认析构函数
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;
}
}
没有指针,默认构造函数,默认析构函数