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

时间:2013-12-29 13:49:28

标签: c++

我正在尝试使用自己的链表实现(称为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;
    }

}

1 个答案:

答案 0 :(得分:0)

if (bookISBN == ((books.find(i)).getbookISBN()){

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

此外,find是数字索引查找的奇怪名称。 (通过代码,你在这里做的主要是数组样式的索引)。另外,如果find是O(N),这可能是一个列表,那么这个代码就是O(N ^ 2),这真的很糟糕。