显示条件有问题?(列表中的对象)

Trouble With Display Condition? (Objects in A List)

本文关键字:对象 列表 条件 有问题 显示      更新时间:2023-10-16

我试图写一个函数来显示基于是否在VIP对象列表。如果我的VIP标志是真的,我只想展示那些储物柜。如果是假的,我要展示每个储物柜,包括VIP储物柜。这是我得到的:

void SelfStorageList::dispLockers(bool vipOnly) {
if (vipOnly) {
    for(LockerNode *p = head; p !=0; p = p->next) {
        if(p->objLocker.isVip) {
        cout << p->objLocker.lockerId << "," << p->objLocker.renterName << "," << p->objLocker.monthlyRent << "," << p->objLocker.isVip << "," << p->objLocker.isRentOverdue << "n"; 
        return;
        }
        else {
        return;
        }
    }
    for(LockerNode *p = head; p !=0; p = p->next) {
        cout << p->objLocker.lockerId << "," << p->objLocker.renterName << "," << p->objLocker.monthlyRent << "," << p->objLocker.isVip << "," << p->objLocker.isRentOverdue << "n";
    }
}

}

很抱歉排这么长的队。我认为它应该工作,但根据我的各种简单测试,它似乎错过了一些情况。谁能给点建议?我是不是把条件说得太简单了?

应该注意的是,head指向列表中的第一个储物柜,而next是指向下一个储物柜的指针,我相信您已经猜到了。

由于return语句,第一个for循环将最多打印1个元素,也就是说,如果头部元素设置了isVip标志,它将打印它。然后,它将返回