C++表达式必须具有类类型错误

C++ expression must have class type error

本文关键字:类型 错误 表达式 C++      更新时间:2023-10-16

我正在尝试使用我自己的链表实现(称为booklist)来实现一个数据库,并为我的实现创建了一个Book类。下面的函数属于一个名为 BookDatabase 的类,它使用 Book 和 BookList 类。在我的 if 语句中,我得到错误表达式必须具有类类型。这是代码。books 是 BookDatabase 类中使用的 BookList,getBookISBN 是 Book Class 的一个函数。 find 函数返回 BookList 指定索引中的 Book 对象。

void BookDatabase::removeBook(const string bookISBN){
    bool matchup = false;
    for (int i = 1; i < books.getLength() && !matchup; i++){
        if (bookISBN == ((books.find(i)).getbookISBN()){
            books.remove(i);
            matchup = true;
        }
    }    
    if (!matchup) {
        cout << "No matchup found" << endl;
    }
}
if (bookISBN == ((books.find(i)).getbookISBN()){

这条线令人担忧。如果它没有编译,可能是因为 books.find(i) 没有返回正确的类型。

此外,find 是数字索引查找的一个奇怪名称。(根据代码,您在这里所做的本质上是数组样式的索引)。另外,如果 find 是 O(N),这可能是一个列表,那么这个代码是 O(N^2),这真的很糟糕。