我有一個包含類Event的對象的隊列。函數多態性與參考數據類型
std::priority_queue<Event> events;
但事件只是實際事件的超類。 讓我們假設我們有以下類:
class Event{
public:
void Action(){
std::cout<<"do nothing"<<std::endl;
}
};
class XEvent : public Event{
public:
void Action(){
std::cout<<"do x"<<std::endl;
}
class YEvent : public Event{
public:
void Action(){
std::cout<<"do y"<<std::endl;
}
};
,並在主要功能:
int main(){
std::vector<Event> events;
events.push_back(XEvent x);
events.push_back(YEvent y);
Event e = events[0];
e.Action();
}
我想e.Action根據重寫版本的行爲。 (即「do x」)。
但是,輸出結果讓我「無所事事」。 有什麼建議嗎?
p.s.我實際上正在尋找一種方法來做到這一點,而不使用指針
閱讀有關切片。該向量應該是'std :: vector事件;'而不是。 –