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

时间:2013-06-12 22:07:11

标签: c++

我正在尝试编写一个函数来根据内部对象是否为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";

    }

}


}

道歉很长。我认为它应该可行,但它似乎错过了一些基于我不同的简单测试的案例。有人可以提供任何建议吗?我或许这个条件太简单了吗?

应该注意的是,头部指向列表中的第一个锁定器,接下来是指向下一个锁定器的指针,因为我确定您已经猜到了。

1 个答案:

答案 0 :(得分:2)

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