警告:基类“A”应该在复制构造函数中显式初始化

2023-12-31

我有以下类结构:

class A{
   A(){}
   A(const A& src){}
};

class B : virtual A {
   B():A(){}
   B(const B& src):A(src){}
};

class C : virtual A {
   C():A(){}
   C(const C& src):A(src){}
};
class D : virtual B, virtual C {
   D():B(),C(){}
   D(const D& src):B(src),C(src){}
};

这给了我警告:

在复制构造函数“D”中:

警告:基类“A”应在副本中显式初始化 构造函数

我不明白。 D 的复制构造函数调用copy-ctorB 称为copy-ctorA 的。 为什么它要我打电话给copy-ctorD 中的 A?

如果我这样做,岂不是copy-ctorA 被调用两次?一次从 B 调用,一次从 D 调用。

对此的任何意见都非常感谢。


现在我证实我是对的,B使用虚拟继承从A派生。

当发生这种情况时,最派生的类负责构造基类。这允许多重继承菱形。

======== A ============
   ^            ^
   B            C
    \           /
     \         /
      \       /
       \     /
          D

D 派生自 B 和 C,并且都派生自 A,因此 D 将继承 A 的 2 个副本,一份来自 B,一份来自 C。

如果B1和B2都使用虚继承从A派生,那么最终类必须初始化基类,即A,从而保证只有一次实例。

这就是您收到错误消息的原因。

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

警告:基类“A”应该在复制构造函数中显式初始化 的相关文章

  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • 是否有可能将 *.pdb 文件包含到发布版本中以查看错误行号?

    我做了一个项目 所有设置都是默认的 当我在调试模式 构建配置 调试 下运行它并遇到异常时 它转储到我的自定义日志记录机制 其中包含错误行号 但是当我运行发布构建时 记录相同的异常 没有行号 只有方法抛出和记录调用堆栈 是否有可能在发布配置
  • 如何将 Visual-Studio 2010 切换到 c++11

    我是 c 编程新手 我想尝试 c 11 新功能 那么我要问的是如何切换 Visual studio 2010 才能编译 c 11 源代码 你可以参考这个表 VC10 中的 C 0x 核心语言功能 表格 http blogs msdn com
  • 如何在 ASP.NET Core 6.0 Web API 项目中启用 cors?

    在我的 ASP NET Core 6 0 Web API 项目中配置了 CORS 但预检请求收到 http 405 错误 换句话说 不允许使用 HTTP OPTION 看起来 cors 没有启用 我见过的例子config EnableCor
  • 应用新设置时如何防止 GraphicsDevice 被丢弃?

    我的游戏窗口允许手动调整大小 这意味着它可以像任何其他普通窗口一样通过拖动其边缘来调整大小 游戏还利用了RenderTarget2D rt2d 在主 Draw 方法中设置主渲染目标 GraphicsDevice SetRenderTarge
  • 多线程 - 比单线程慢

    当我使用多个线程而不是单线程运行程序时 它会变慢 不是应该更快吗 该程序应该遍历从起始目录开始的所有目录 并查找并打印所有名为 X 的文件 代码如下 while done pthread mutex lock lock if list is
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • 如何使用 C# 将表格粘贴到 Ms-Word 文档的末尾

    我有一个预制的 Word 模板 其中有一个表格 我想打开它 然后在文档末尾添加 粘贴 另一个表格 问题是它不会转到文档的末尾 而是将新表格粘贴到原始表格的第一个单元格中 任何帮助将不胜感激 previous code copied a ta
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • 如何在 ASP.NET Core 项目中使用 MStest 测试 Ok() 结果

    我正在使用 MStest 来测试我的控制器 我想测试这个动作 HttpGet Name GetGroups public async Task
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v

随机推荐

  • 'git add .' 是什么意思? ('git add' 单点) 命令做什么?

    当使用句点 或句号 单点 将文件添加到舞台时 我不明白 Git 命令的含义 git add 这是做什么的 git add 添加 暂存当前目录中的所有文件 这是为了方便 如果您不想通过使用添加某些文件 仍然可以使用 gitignore 一个教
  • QGraphicsView / QGraphicsScene 尺寸匹配

    如何制作具有指定大小的 QGraphicsScene 和 QGraphicsView 来监视具有相同大小的场景 这听起来像是一个愚蠢的问题 但请考虑以下测试代码 1 import sys from PyQt4 import QtGui Qt
  • 执行 GET 请求并构建查询字符串

    我对 Go 还很陌生 还不太了解一切 在许多现代语言 Node js Angular jQuery PHP 中 您可以使用附加查询字符串参数执行 GET 请求 在 Go 中执行此操作并不像看起来那么简单 而且我还无法真正弄清楚 我真的不想为
  • 从快捷方式打开特定目录中的 Powershell

    如何制作一个将 Powershell 打开到特定目录的 Windows 快捷方式 比如目标 SystemRoot system32 WindowsPowerShell v1 0 powershell exe noexit command c
  • Fiddler - 通过隧道传输 http 请求到端口 443

    我有 Fiddler 来解密 https 流量 效果很好 http fiddler2 com documentation Configure Fiddler Tasks DecryptHTTPS http fiddler2 com docu
  • Django 基于类的视图,get_absolute_url 不起作用

    我购买并正在阅读 Two Scoops of Django Best Practices for Django 1 5 一书 其中有一个基于类的视图的示例 执行此操作后 我在提交表单后收到错误 ImproperlyConfigured at
  • Eventmachine gem 安装失败

    我无法安装 eventmachine 好吧 我知道这个问题已经被问了很多 但到目前为止 我发现没有任何解决方案对我有帮助 所以我在这里发布作为最后的手段 I use windows 8 x64 using ruby 2 0 0p195 x6
  • 将图标作为资源嵌入到 WPF 应用程序中

    我正在尝试将一个图标嵌入到我的 WPF 应用程序中 以便我可以使用以下代码将其拉出以用作 Windows 7 JumpList 中的图标 newScene IconResourcePath System Reflection Assembl
  • 不区分大小写的正则表达式

    在 Haskell 中使用带有选项 标志 的正则表达式的最佳方法是什么 I use Text Regex PCRE 该文档列出了一些有趣的选项 例如 compCaseless compUTF8 但我不知道如何使用它们 All the Tex
  • 如何使用 lodash 比较对象而不考虑其顺序

    我正在尝试使用 lodash 比较两个对象 如下所示 问题是它总是返回 false 我认为问题在于对象具有不同的键和值顺序 然而 无论订单如何 我都找不到如何比较它的解决方案 如何忽略顺序并正确比较两个对象 var obj1 event p
  • 是否可以更改 sendEmail 中的“发件人电子邮件”?

    我目前正在编写一个脚本 如果 Excel 已更新 该脚本会向用户发送电子邮件 我能够发送电子邮件 但是 在测试时 我注意到 发件人 电子邮件是我的电子邮件 我想将 发件人 电子邮件更改为另一个电子邮件 电子邮件受保护 cdn cgi l e
  • 如何在 k8s 集群中更新 Prometheus 配置

    我在 k8s 中运行 Prometheus 你能告诉我如何更改运行配置吗prometheus yaml在集群中 我只想简单地改变 scrape configs job name my exporter scrape interval 15s
  • Javascript:让用户选择像 Firebug 这样的 HTML 元素?

    我想编写一个浏览器 Chrome FF 扩展 需要选择网页上的元素 我希望它的行为像 Firebug 的元素检查器那样 单击检查箭头 然后可以悬停 突出显示元素 当您单击所需的元素时 系统会检查该元素 我只是对允许用户选择元素的代码感兴趣
  • jOOQ:在单个对象中返回带有 join、groupby 和 count 的列表

    核心问题 如何正确地将查询中的信息获取到对象中 Idea我正在 DAO 中创建函数 这可以归结为以下查询 select A count from A left join B on B aId A aId group by A 我正在寻找一种
  • RXTX gnu.io.PortInUseException:&警告:RXTX 版本不匹配

    我正在尝试使用 RXTX API 通过 Java Marine API 从 NMEA 0183 GPS 获取 GPS 数据 运行 Java Marine 提供的 SerialPortExample java 我返回两个错误 也许它们是相关的
  • Unity脚本执行顺序和Start()

    Unity的文档中有这样一行 默认情况下 不同脚本的Awake OnEnable和Update函数按照脚本加载的顺序 任意 被调用 所以我在这里有两个问题 在这种情况下 任意 是什么意思 是随机的吗 这是否还包括 Start 和 Awake
  • 如何在node.js中使用集群?

    我对 Node js 和 Express 非常陌生 我目前正在通过构建自己的服务来学习它 我最近读到了有关集群的内容 我明白了集群的作用 我无法理解的是如何在生产应用程序中使用集群 我能想到的一种方法是使用主进程坐在前面 并以循环方式将传入
  • 通过c++接口导出整个类

    好的 我会重写问题 1 做的够吗 class declspec dllexport CXyz public int Food printf Food n 这样该类就可以在 exe 中像这样使用 include CXyz h CXyz obj
  • Imageview 和 PagerAdapter

    我想将图像放在 ViewPager 的每个页面中 就像一本书 这些图像来自 url 列表 我的适配器看起来像这样 private class MyPagerAdapter extends PagerAdapter Override publ
  • 警告:基类“A”应该在复制构造函数中显式初始化

    我有以下类结构 class A A A const A src class B virtual A B A B const B src A src class C virtual A C A C const C src A src clas