如何从优先级队列中检索和修改元素

时间:2015-03-01 04:38:03

标签: c++ virtual-functions

我想调用以下内容:

Event& event = events.top();  //This line throws an error because event isn't const
events.pop();
event.process();  //But event can't be const because this function is intentionally not const

events是优先级队列,process将修改对象。但是,events.top()会返回const &。我相信复制构造函数不存在,因为Event是一个抽象类,包含纯虚函数。

因此,我在这里只看到两个选项:

  1. 删除纯虚函数
  2. 使用一些魔法强制转换删除const
  3. 我真的不喜欢这两种选择。 是否有更好的方法来弹出,然后修改此优先级队列中的顶级抽象元素?

    作为旁注,process()不会更改基本Event类中包含的任何内容,只有其子类需要该功能。

0 个答案:

没有答案