0

内部のオブジェクトが VIP かどうかに基づいてリストを表示する関数を作成しようとしています。VIP フラグが true の場合、それらのロッカーのみを表示します。false の場合は、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 に答える