'operator=' 在 '((library*)this)->library::d atabase[bookcode] = -1'|

'operator=' in '((library*)this)->library::database[bookcode] = -1'|

本文关键字:library bookcode atabase this operator gt      更新时间:2023-10-16

我无法理解这个错误。为什么我不能使用操作员删除我的条目?帮我做这个。这是我的图书入门课,

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;

由于使用了固定大小的数组,因此无法删除条目。事实上,您总是有MAX条目,即使它们还不包含任何有效数据。

要么你需要存储某种标志(要么在条目内,要么在另一个数组或另一个方法中)关于哪些位置是有效的,或者使用一个不固定大小的数据结构,比如std::vectorstd::list。这样你就可以存储任意数量的书,而不受任意的最大存储量的限制。

我还建议您使用std::string来存储书籍和作者姓名。你能找到多少本书的名字长度超过29个字符?您不想在您的系统中支持这些吗?

database[bookcode]bookEntry

不能将int赋值给类实例。

你可以这样分配一个默认实例:

database[bookcode] = bookEntry();

如果您的bookEntry构造函数构造了一个空条目(不管这意味着什么),