2015-09-20 117 views
-1

我不明白這個錯誤。爲什麼我不能使用操作員刪除我的條目?幫助我做到這一點。這是我的書入門級,'operator ='in'((library *)this) - > library :: database [bookcode] = -1'|

class bookEntry{ 
public: 
    int code; 
    int copies; 
    char name[30]; 
    char author[30]; 
}; 

,這是我的類庫

class library{ 
public: 
    int numBooks; 
    bookEntry database[MAX], tempdatabase[MAX]; 

    library(){ 
     numBooks = 0; 
    } 
    void insertBook(int bookcode, char bookName[], char author[], int bookcopies); 
    void deleteBook(int bookcode); 
    void search(int bookcode); 
    void displayBook(); 
    void edit(int bookcode); 
    void editname(int numBooks); 
    void editauthor(int numBooks); 
    void editcopies(int numBooks); 

}; 

,這是我刪除的條目的void函數,

void library::deleteBook(int bookcode) 

    { 
    system("cls"); 

    cout<<endl; 

    cout<<"Enter A Code of a Book To Delete That Entry "; 

    cin>>bookcode; 

    cout<<endl; 
    int i; 

    for(i=0;i<=numBooks-1;i++) 

    { 
    if (bookcode==database[i].code) 
    { 
      database[bookcode]=-1; 
      cout<<"Book Successfully Deleted...!!"<<endl; 
    } 


    else 

    { 
    cout<<"Book not found...!!!"<<endl; 
    } 

    } 
    getch(); 
    } 

這是行,其中即時獲取錯誤,

database[bookcode]=-1; 

回答

1

database[bookcode]bookEntry

您不能將int分配給類實例。

您可以這樣分配的默認實例:

database[bookcode] = bookEntry(); 

這個工作,如果你bookEntry構造函數構造一個空的條目(知道是什麼意思)。

+0

那麼我應該怎麼做才能刪除所選條目 – user3549302

+1

什麼都沒有。你不能「刪除」數組元素。你將不得不更清楚你的目標。 –

1

由於使用了固定大小的數組,因此無法刪除條目。實際上,即使它們尚未包含任何有效數據,您也始終有MAX條目。

要麼需要存儲某種標誌(或者條目的內部或在另一個陣列或另一方法)關於哪些位置是有效的,或使用的數據結構,其是固定的大小不是,如std::vectorstd::list。然後,您可以存儲任意數量的書籍,不受任何最大限​​制。

我還建議您使用std::string來存儲書籍和作者姓名。你能找到多少本書,長度超過29個字符?你不想在你的系統中支持這些嗎?

+0

即時通訊C編程noob請幫助我這一點。我不知道如何使用std :: vector和std :: list .pease幫助我在此 – user3549302

+0

'std :: vector 書籍; bookEntry temp = ....; books.push_back(溫度);' –