c++ 基类指针 入队列错误
以下是出错的地方
void Simulater::coustomerEnter(int ArriveTime) {
srand(time(0));
User* u;
NormalUser a(ArriveTime);
switch (rand() % 3) {
case 0: {
NormalUser nomaluser(ArriveTime);
NormalUserQueue.push(nomaluser);
break;
}//普通用户
case 1: {
VIPUser vipuser(ArriveTime);
VIPUserQueue.push(vipuser);
break;
}
case 2: {
u = new OfficialUser(ArriveTime);
OfficialUserQueue.push(*u);
break;
}
}
}
以下是类的实现
class User {
public:
int id;
int isWait;
int ArriveTime;
private:
int ServeTime=4000;//ms
wchar_t type;
public:
User(int ArriveTime_) :ArriveTime(ArriveTime_) {};
virtual void getServed() = 0;
};
class NormalUser :public User {
public:
NormalUser(int ArriveTime_) :User(ArriveTime_) {};
void getServed() {
};
};
class VIPUser :public User {
public:
VIPUser(int ArriveTime_) :User(ArriveTime_) {};
void getServed() {
};
};
class OfficialUser :public User {
public:
OfficialUser(int ArriveTime_) :User(ArriveTime_) {};
void getServed() {
};
};
case 2中push(*u),无法将基类指针指向的子类入队列
你那也不是指针啊,不用
将u转化成OfficialUser*,
OfficialUser*of= dynamic_cast<OfficialUser*>(u);