我一直在尝试实现库系统代码。但是,每当我尝试将对象传递给数组时,我都会得到
Visual Studio 2013中的访问冲突写入位置0x00000000
错误
这是我的代码 LibrarySystem.cpp
static int bookSize = 0;
static int studentSize = 0;
LibrarySystem::LibrarySystem()
{
books = NULL;
students = NULL;
}
LibrarySystem::~LibrarySystem()
{
}
void LibrarySystem::addBook(const int bookId, const string name, const string authors, const int year){
bool checkBook = false; //checks whether the book is in the list
Book *tempBooks = new Book[bookSize++];
Book newBook;
if (bookSize == 1) {
newBook.setBookId(bookId);
newBook.setBookName(name);
newBook.setAuthors(authors);
newBook.setYear(year);
}
tempBooks[bookSize - 1] = newBook;
cout << tempBooks[1].getAuthors(); // To testing. This is where execution stops
}
}
答案 0 :(得分:1)
C(和C ++)数组索引基于零。
cout << tempBooks[0].getAuthors();
修改:此外,as others have pointed,new Book[bookSize++]
看起来很可疑。
答案 1 :(得分:1)
您的数组创建为
有0个条目Book *tempBooks = new Book[bookSize++];
bookSize++
将评估bookSize
的当前值,即0。
如果要评估增量后的值,请使用++bookSize
。