【问题标题】:Ensure that a class is not abstract确保类不是抽象的
【发布时间】:2017-09-17 00:15:04
【问题描述】:

当我更改虚拟方法的签名时,它经常发生,继承类变得抽象。这可能会导致(与原始更改)完全无关的位置出现(令人困惑的大)错误消息。在这些消息的某处,我读到“Foo 是抽象的”。但是解析这些错误信息很乏味。有没有办法强制一个类不是抽象的?

【问题讨论】:

  • 设计更改通常会产生很大的涟漪。您应该尽早尝试稳定界面,以避免此类问题。

标签: c++ class compiler-errors abstract-class typechecking


【解决方案1】:

您可以使用override specifier 指定派生类中的方法覆盖基类中的抽象方法。当您更改基类中方法的签名时,override 指定的方法应该会导致明确的编译器错误,因为它不再覆盖基类方法。

【讨论】:

  • 值得一提的是,关键字override是从C++11开始的,因此如果它不是隐式的,你需要在编译器中启用它。
  • 没问题。我专注于类的属性。我只是从未想过它可能是该方法的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 2013-03-07
  • 2011-05-22
  • 2013-01-02
  • 2013-08-23
相关资源
最近更新 更多