0

我正在尝试编写一个函数来根据其中的对象是否为 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 是指向下一个储物柜的指针,我相信你已经猜到了。

4

1 回答 1

2

由于这些return语句,第一个for循环将最多打印 1 个元素,即如果 head 元素设置了 isVip 标志,它将打印它。然后,它将返回。

于 2013-06-12T22:15:03.950 回答