1

私は次のクラスを持っています:

#include <string>
#include <cstdlib>

using namespace std;

class Locker{


public:

int lockerId;

string renterName;

double monthlyRent;

// The variable is true when the locker is a vip locker
//if the locker is a regular locker then this variable is set to false

bool isVip;

bool isRentOverdue;

Locker(){};

Locker(int id, string name, double rent, bool vip=0, bool overdue=0);

bool operator==(Locker const &other);
 };

編集:ロッカーノードクラス

class LockerNode{
public:

Locker objLocker;
LockerNode *next;


LockerNode(){
    next=0;
};

LockerNode(Locker e, LockerNode *ptr=0){
    objLocker=e;
    next=ptr;
}
  };

と実装:

#include <sstream>
#include "Locker.h"

#include <iostream>

 using namespace std;

 Locker::Locker(int id, string name, double rent, bool vip, bool overdue){
lockerId=id; renterName=name; monthlyRent=rent; isVip=vip; isRentOverdue=overdue;
 }

 bool Locker::operator==(Locker const &other){
if(lockerId==other.lockerId && renterName==other.renterName && monthlyRent==other.monthlyRent && isVip==other.isVip && isRentOverdue==other.isRentOverdue)
    return true;
else return false;
 }

関数に次のコードがあり、リンクされたリスト内のオブジェクトの数を追跡し、オブジェクトの数とプロパティに基づいていくつかの操作を実行しようとしています。e新しく作成されたオブジェクトを渡します。オブジェクトにプロパティ vip = true がある場合、他の非 vip オブジェクトの前に配置する必要があります。ただし、既に vip オブジェクトが存在する場合は、そのすぐ後ろに配置します。したがって、次のコード:

int count = 0;
LockerNode *p = head;

for(;p!=0;count++, p=p->next) {

    if(count == 1) {
        if (e.isVip) {
            if(p->isVip) // !!!!!!!!!Issue here!!!!!!!!!!
        }

    }

パラメータを細かくチェックして、vipかどうかを判断しました。ただし、リスト内の現在の要素を同じように確認する方法がわかりません。問題の行に対する私の上記の努力はうまくいきませんでした。私は構文について少し混乱しています。誰でも私を助けることができますか?

ありがとう!

4

1 に答える 1