我在真正理解使用引用而不是指针的限制时遇到了一些麻烦:如何将没有虚函数的派生对象(只有一个数据元组)传递到基于对象的列表中?
在我的应用程序中,有一个事件对象和一个队列:
class Event {
String name;
public:
Event(const String &name_);
};
class KeyEvent : public Event {
public:
int key;
};
std::queue<Event> eventsQueue;
当我将队列中的对象转换为它们的原始类型时,我在所有变量中都得到了未定义的值,而指针从未发生过这种情况。所以基本上,
while(!eventsQueue.empty()) {
auto &e = eventsQueue.front();
if(e.name == "keyPress") {
std::cout << static_cast<KeyEvent &>(e).key;
}
}
给我胡言乱语:http: //ideone.com/rbzGJV
有没有办法在不使用指针的情况下解决这个问题?有没有办法在容器内有引用std::queue
?