问题遇到的现象和发生背景
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),无法将基类指针指向的子类入队列