C++ 中的接口继承

2024-01-12

我有以下类结构:

class InterfaceA
{ 
   virtual void methodA =0;
}

class ClassA : public InterfaceA
{
   void methodA();
}

class InterfaceB : public InterfaceA
{
   virtual void methodB =0;
}

class ClassAB : public ClassA, public InterfaceB
{ 
   void methodB(); 
}

现在以下代码无法编译:

int main()
{
    InterfaceB* test = new ClassAB();
    test->methodA();
}

编译器说该方法methodA()是虚拟的,没有实现。我认为它是在ClassA(它实现了InterfaceA)。 有谁知道我的错在哪里?


那是因为你有两份副本InterfaceA。请参阅此以获得更大的解释:https://isocpp.org/wiki/faq/multiple-inheritance https://isocpp.org/wiki/faq/multiple-inheritance(你的情况类似于“可怕的钻石”)。

您需要添加关键字virtual当您从接口继承类时。您还需要添加virtual当您从 Interface 继承 Interface 时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的接口继承 的相关文章

随机推荐

  • 支持 Phonegap 最小平台版本

    我的公司正在进行一个大项目 我必须开发 IOS Android symbian Windows Phone 和黑莓 在听说和研究 Phonegap 后 我真的正在考虑使用它 但是我想知道是否有以及哪些是针对这些平台使用 Phonegap 进
  • CanCan 和不带模型的控制器

    我正在使用 CanCan 进行授权 我在 app config ability rb 中定义了模型操作用户规则 并且工作正常 我已经添加了这一行load and authorize resource到我的 application contr
  • 如何在 Spark Streaming EC2 集群应用程序中从 S3 读取输入

    我试图让我的 Spark Streaming 应用程序从 S3 目录读取他的输入 但在使用 Spark submit 脚本启动它后我不断收到此异常 Exception in thread main java lang IllegalArgu
  • 如何使用 GattServer 以编程方式清除蓝牙缓存

    我对 BLE 有点熟悉 并且我面临着继承代码的一些问题 所以该应用程序的工作方式如下 启用 BLE 后 应用程序会扫描设备 该应用程序显示找到的设备 用户选择要配对的设备 该应用程序与设备配对 我面临的问题是 配对几次 情况有所不同 后 手
  • 为什么Python没有访问修饰符?Python中有什么替代品?

    为什么Python没有像C Java中那样的访问修饰符 即公共 私有等 Python中封装和信息隐藏的替代方法是什么 From 维基百科 https en wikipedia org wiki Python syntax and seman
  • AllAuth安装

    我正在尝试安装和配置 Django AllAuth 但遇到了很多障碍 恐怕我只是错过了一些可能会澄清一些事情的基本概念 为了使基本的社交身份验证正常工作 需要在社交提供商 Facebook Twitter 等 内部完成哪些设置 如果是这种情
  • 如何清除chrome应用程序的错误列表?

    首先介绍 Chrome 应用程序 我正在尝试简化某种工作流程 我已启用复选框来收集错误 但似乎无法在应用程序执行之间清除它们 我以为关闭应用程序然后重新启动它就可以了 现在唯一有效的方法是删除应用程序 然后重新加载包 要清除 收集错误 中的
  • 如何覆盖 Razor 的“名称”HtmlAttribute

    Html RadioButtonFor Model gt Model Location Location Html LabelFor Model gt Model Location Location Html RadioButtonFor
  • 在keras中,如何拟合不同类型的多个输入数据

    我有 3000 张 320 320 形状的图像 它们的拍摄时间以及它们的标签 现在我想使用这两种类型的数据 图像和时间 来预测它们的标签 主要代码如下 num classes 10 image out GlobalMaxPooling2D
  • Hibernate: LazyInitializationException: 未能延迟初始化角色集合。无法初始化代理 - 无会话

    我有下一个错误 nested exception is org hibernate LazyInitializationException failed to lazily initialize a collection of role c
  • 如何根据消息头属性仅读取特定队列消息

    我在 activemq 队列中有一个消息列表 每条消息都有一个带有值的自定义标头属性 我应该如何才能仅访问那些自定义标头属性值 123 的消息 我正在使用类似下面的东西从队列中选择消息 如何选择具有 customHeaderProperty
  • 如何处理android中的睡眠模式进入?

    我在任何地方都没有找到它 我该如何处理在android中进入睡眠模式 当Android设备进入睡眠模式时我想做什么 这是可能的还是有办法处理它 只需使用 BroadCastReceivers 进行系统调用 唤醒 睡眠 即可实现此目的 And
  • 如何在MVVM模式中实现INotifyPropertyChanged和observableCollection?

    我在模型中有一个 ObservableCollection of Products 我希望 ViewModel 能够侦听 ObservableCollection of Products 中的任何更改 我不确定如何去实施它 我读过一些教程
  • 查找二叉树中指定节点的路径 (Python)

    我在计算二叉树中从根到指定节点的路径时遇到问题 这是专门针对此问题的 Python 解决方案 这是一个例子 给定下面的二叉树 如果我指定值为 4 的节点 我想返回 1 2 4 如果我指定值为5的节点 我想返回 1 2 5 1 2 3 4 5
  • C++ 对象实例化

    我是一名 C 程序员 正在尝试理解 C 许多教程使用片段演示对象实例化 例如 Dog sparky new Dog 这意味着稍后您将执行以下操作 delete sparky 这是有道理的 现在 在不需要动态内存分配的情况下 是否有任何理由使
  • Visual Studio中有类似Eclipse Perspective的东西吗?

    我想知道 Visual Studio 2008 或 2010 中是否有类似 Eclipse Perspectives 的东西 对于那些不熟悉 Eclipse 的人 这里有一个视角的定义 http www eclipse org articl
  • spplot() 上的国家/地区标签

    我想为 spplot 上的区域添加名称标签 Example load url http gadm org data rda FRA adm0 RData FR lt gadm FR lt spChFIDs FR paste FR rowna
  • spring-context.xml 的位置

    当我在 tomcat 上运行应用程序时 spring context xml 文件位于 WEB inf spring context xml 还行吧 但是运行 junit 测试时 我必须向它提供 spring test context xm
  • Jquery 与原型 magento 冲突 - 我怎样才能分开?

    我似乎无法通过我的 Magento 网站将 jQuery 与 Prototype 分开 我已经使用更改的标签等在 JsFiddle 上工作了 但是当我将它添加到我的 magento 站点时 我不断收到未捕获的语法错误 页面位于http ww
  • C++ 中的接口继承

    我有以下类结构 class InterfaceA virtual void methodA 0 class ClassA public InterfaceA void methodA class InterfaceB public Inte