我正在尝试编写一个函数来根据内部对象是否为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";
}
}
}
道歉很长。我认为它应该可行,但它似乎错过了一些基于我不同的简单测试的案例。有人可以提供任何建议吗?我或许这个条件太简单了吗?
应该注意的是,头部指向列表中的第一个锁定器,接下来是指向下一个锁定器的指针,因为我确定您已经猜到了。
答案 0 :(得分:2)
由于return
语句,第一个for
循环最多会打印1个元素,也就是说,如果head元素设置了isVip标志,它将打印它。然后,它将返回。