2014-03-31 111 views
-1

我一直在試圖實現一個庫系統代碼。然而,每當我嘗試我的對象傳遞給數組我得到訪問衝突寫入位置0x00000000錯誤C++

訪問衝突寫入位置在Visual Studio 2013

這裏00000000

錯誤是我的代碼 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

'tempBooks [1]'在這一點上可能不會被初始化爲任何東西。也許你的意思是'tempBooks [0]'? –

+0

它沒有工作。仍然有這個錯誤 –

+0

我想每當調用函數 –

回答

1

C(和C++)數組索引是從零開始的。

cout << tempBooks[0].getAuthors(); 

編輯:另外,as others have pointednew Book[bookSize++]看起來很可疑。

1

您的陣列創建由

Book *tempBooks = new Book[bookSize++]; 

bookSize++有0項將評估到的bookSize當前值,如果你想評估後遞增,使用它的值是0

++bookSize

+0

非常感謝!這有效 –

+1

@BurakKantarcı - 謹慎的一句話:這看起來像在工作,但事實並非如此。你的'tempBook'數組是一個局部變量,它不會被改變,而是以不同的大小反覆創建。 –

+0

@LeonardoHerrera我打算將它們添加到_books_將指向的另一個數組中。這將是我編碼的下一步 –

相關問題