我有以下课程:
#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);
};
编辑:LOCKER NODE CLASS
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。但是,我不确定如何检查列表中的当前元素是否相同。我在线上的努力没有奏效。我对语法有点困惑。任何人都可以帮助我吗?
谢谢!
答案 0 :(得分:1)
你的更衣室Node类在哪里?可能存在问题......
好的尝试替换这个:
if(p->isVip) // !!!!!!!!!Issue here!!!!!!!!!!
使用:
if (p->objLocker.isVip) {//true/false for this node
p是一个访问他的成员的指针是 - &gt; 但是objlocker不是一个指针,访问他的成员是用“。”