【问题标题】:How can I find out which method of a derived class is not implemented?如何找出未实现派生类的哪个方法?
【发布时间】:2015-07-08 16:48:15
【问题描述】:

我有一个抽象基类,其中一些功能是实现的,一些是纯虚拟的。

从这个基类,我创建了一个实现所有虚函数的派生类。

但是,它仍然抱怨派生类是抽象的。我假设我忘记了实现一种方法,但我看不到是哪一种。有没有办法获取继承的虚拟方法列表?我正在使用 Visual Studio 2010。

【问题讨论】:

  • 我无意中定义了一个新函数,它类似于继承的函数,但不一样。因此,对于编译器,我定义了一个新函数而不是实现继承的函数。区别只是一个“&”,因为我从按值调用切换到按引用调用......但是问题仍然存在。
  • 在 C++11 或更高版本中,您可以通过将 override 添加到任何应该是覆盖的函数的声明中来防止该特定错误。如果它没有覆盖任何内容,您将收到一条友好的错误消息。

标签: c++ visual-studio-2010 inheritance abstract-class pure-virtual


【解决方案1】:

当由于抽象类实例化尝试而导致编译失败时,您应该 获取输出选项卡中缺少的确切方法,请参见以下示例:

8>MVSystemTesting\ReportsServiceMock.cpp(10): error C2259: 'CMailslotIPCChannel' : cannot instantiate abstract class
8>          due to following members:
8>          'void CIPCChannelBase::Listen(void)' : is abstract
8>          d:\tfs\IPCChannelBase.h(27) : see declaration of 'CIPCChannelBase::Listen'

这里可以看到Listen没有实现。

这是您打开输出选项卡的方式:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2021-02-17
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多