【问题标题】:Use a volatile paramet inside a virtual function在虚函数中使用 volatile 参数
【发布时间】:2015-07-03 11:28:15
【问题描述】:

virtual void doEventLoop(char volatile* watchVariable);

我尝试实现上述方法,但它给了我一个错误(说它是抽象的)

所以不使用 volatile 我可以成功编译它。 问题出在哪里?

【问题讨论】:

  • 你不能在传递给函数的参数上使用volatile!!!无论如何它没有意义,因为volatile 是为了向编译器表明这个变量可以从函数之外的某个地方改变。
  • 其实我在编译live555 liveMedia的时候也遇到过这个问题。
  • “说它是抽象的”。说什么是抽象的?什么时候说的?什么代码?

标签: c++ function virtual volatile


【解决方案1】:

至少可以说,如果缺少问题,您的描述。

但是从您目前提供的内容来看,我猜这个方法应该覆盖某些基类中的纯虚拟方法。在基类中,方法的签名没有volatile。这意味着您不能突然添加volatile。如果添加volatile,则声明一个完全不同的虚方法,它不会覆盖基类中的虚方法。基方法保持未覆盖(即纯),类保持抽象。

【讨论】:

  • 它也在标题中。
  • @Shamendra:如果volatile 也存在于基类中,那么您所描述的内容听起来像是某种无法解释的魔法。肯定有其他事情,你没有告诉我们。
  • 实际上这是在 live555 代码库中。我从纯虚函数和其他实现中删除了 volatile。那么之后就可以编译了。
猜你喜欢
  • 1970-01-01
  • 2018-01-08
  • 2012-09-04
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多