C++ 通过以非抽象子类为参数的方法重写引用抽象类作为参数的纯虚方法

2024-01-09

我有以下代码:

struct A{ f()=0; };
struct Aa : A{ f(){} };
struct B{
   void foo(A&)=0;
};
struct Bb : B{
   void foo(Aa&);
};

现在我无法创建Bb类实例,因为我没有覆盖foo从课堂上B与所需的参数。我怎样才能让它发挥作用?


让我们假设这是可能的/编译并添加额外的类:

struct A{ void f()=0; };

struct Aa : A{ int x; void f(){} };
struct Ab : A{ double x; void f(){} };

struct B{
   void foo(A&)=0;
};
struct Bb : B{
   void foo(Aa&);
};

现在这应该如何运作?

std::unique_ptr<B> p = std::make_unique<Bb>;
Ab a;
p->foo(a); // ???

如何重写函数Bb::foo应该处理这种情况吗?它期待某种类型的东西Aa,但是得到了Ab哪个不是Aa. From B::foo从这个角度看,这个电话完全没问题,因为Ab是的孩子A.

这应该会提示您为什么编译器没有执行您所期望的操作。

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

C++ 通过以非抽象子类为参数的方法重写引用抽象类作为参数的纯虚方法 的相关文章

  • Postsharp 不登录跟踪级别

    我喜欢在跟踪级别记录一些 Postsharp 消息 不幸的是 日志到这个级别没有打印任何输出 所有其他级别都在工作 与控制台或 NLog 后端或从其他类登录时的行为相同 如何启用跟踪级别 应用程序 xaml cs Log Attribute
  • 是否保证 sizeof(T[N]) == N * sizeof(T) ?

    我一直假设 N 个元素类型的数组的大小T 由返回sizeof保证正好是N次sizeof T The 对这个问题的评论 https stackoverflow com questions 46457449 is it always the c
  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • 将视频上传/保存到数据库或文件系统

    我以前从未尝试过保存视频 所以我对此了解不多 我知道如果视频很小 我可以转换为字节数组并保存到数据库 但是为了提高效率 我想了解如何将任何上传的视频保存到我的服务器文件中 然后只保存该文件的文件路径我的数据库表中的视频 我完全不知道如何开始
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 如何将输出重定向到 boost 日志?

    我有一个使用boost log的C 程序 我加载了用户提供的动态链接库 我想将 stderr 重定向到 boost 日志 以便用户的库随时执行以下操作 std cerr lt lt Some stuff 它产生相同的结果 BOOST LOG
  • WCF 服务中的缓冲区大小

    我们有一个 WCF 服务 它执行某些存储过程并将结果返回给 silverlight 客户端 某些存储过程最多返回 80K 行 下面给出的是 web config 中服务的设置
  • 我的代码哪里有泄漏?

    下面是我的代码 它打开一个 XML 文件 old xml 过滤无效字符并写入另一个 XML 文件 abc xml 最后 我将再次加载 XML abc xml 当执行以下行时 出现异常 表示 xml 文件被另一个进程使用 xDoc Load
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • 如何在 stl 模板中使用导出类 (__declspec(dllexport))?

    我正在使用导出的类 class declspec dllexport myclass private template declspec dllexport class std map
  • 小数精度

    我使用小数类型进行高精度计算 货币 但我今天遇到了这个简单的划分 1 1 37 这应该再次得到 37 http www wolframalpha com input i 1 2F 281 2F37 29 http www wolframal
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个

随机推荐

  • 无法在 CentOS 上安装 Ruby

    我只是无法在我的 CentOS 也托管 cPanel 上安装 Ruby sudo yum install ruby ruby devel ruby irb ruby rdoc ruby ri audit log user command 连
  • 有没有办法忽略 Django 中的缓存错误?

    我刚刚将我们的开发 Django 站点设置为使用 redis 作为缓存后端 一切正常 我关闭了 redis 来看看会发生什么 果然由于缓存后端行为而出现了 Django 404 连接被拒绝 或者出现各种其他错误 有什么方法可以指示 Djan
  • 用空字符串初始化所有字符串成员

    我想将对象的所有 String 成员设置为空字符串 如果它们为空 伪代码 foreach member in object if member instanceof String and member null member 实现这一目标的
  • 禁用 Flex CSS 类型选择器警告?

    我正在构建一个较大的 Flex 项目 其中包含多个模块 生成多个 SWF 的单个 Flex 项目 现在 我有一个 css 文件 正在主 SWF 标记中加载
  • 使用 JavaScript 更改输入字段的背景颜色

    我正在制作一个表单 并将输入字段设置为仅使用 JavaScript 进行读取 我想将只读属性的默认颜色更改为绿色或黄色 HTML
  • Xcode 6:如何禁用优化 (Swift)

    调试期间不会触发断点 我发现这是因为优化了代码 如何禁用优化 我浏览了每个工具栏 我能找到的最接近的选项是Product gt Perform Action gt Generate Optimisation Profile Xcode 说
  • 读取 JSF Web 应用程序静态代码中的 .properties 文件

    我想从静态块中的属性文件获取数据库连接参数 属性文件位置是WEB INF classes db properties 我会更喜欢使用getResourceAsStream 方法 我尝试了很多方法 但都返回了null private stat
  • 返回日期没有返回小时和分钟

    这是我的代码 CREATE OR REPLACE FUNCTION GET DATE P DAYS IN NUMBER RETURN DATE AS V DATE DATE BEGIN V DATE SYSDATE P DAYS DBMS
  • Odata Url 降序转换

    我需要按患者的 Visidate 降序获取数据 所以我尝试了这样的网址 192 168 1 105 33396 FalconCPDataService svc DEPhysicians format json expand DEPatien
  • NUnit:字典断言

    我想要一个一班轮 在 NUnit 中 断言两个字典是否相同 即 我想要以下代码的简洁版本 public static void DictionaryAssert
  • WPF:触发动画 - 沿 Y 轴向下移动控件

    我有一个想要向下移动的控件MouseOver 不幸的是 当我将鼠标悬停在上面时 动画不会运行 但背景颜色会改变 Toolkit Dialog是一个继承的自定义对话框控件ContentControl 另外 在最终实现中我不会使用 MouseO
  • 在 Android 上获取用户当前位置的最简单、最可靠的方法是什么?

    The LocationManager对于只需要偶尔粗略估计用户位置的应用程序来说 Android 上的 API 似乎使用起来有点痛苦 我正在开发的应用程序本身并不是真正的位置应用程序 但它确实需要获取用户的位置才能显示附近企业的列表 它不
  • Rails 中的 Carrierwave 未加载默认 URL

    我在 Carrierwave 上传器中设置默认图像时遇到问题 它似乎在 URL 前面附加了一个奇怪的类 但不渲染图像 请参阅下面的我的代码 Helper encoding utf 8 class UserpicUploader lt Car
  • 从DataTable中获取布尔值

    如何检索数据集中的布尔值 我使用的是 Visual Studio 2003 我正在尝试以下操作 但它不起作用 if product inactive don t display and redirect to main page if db
  • 将项目数据传递给反应模式

    我有一张地图 它渲染了一些项目 其中一行在下面 a this setState openDeleteModal true gt Delete a 显然 我想在用户单击删除时打开一个模式 但我必须传递一些信息 例如项目名称 项目 ID 来执行
  • switch执行所有case语句

    有人能解释一下为什么我的循环从 0 到 7 吗 我只需要获取前 3 种情况 但程序正在经历所有情况 代码位于 show 方法中 for brojac 0 brojac lt 3 brojac switch brojac case 1 fig
  • 从 SqlDataReader 创建 JSON 字符串

    UPDATE 我想到了 看看我下面的回答 https stackoverflow com questions 5554472 create json string from sqldatareader 5597472 5597472 我正在
  • PHP、MySQL、SELECT 问题

    您好 我有一个看起来很复杂的问题 但我会尽力解释得更好 这是一个逻辑问题 我有一个数据库表 该数据库表 我们称之为表 A 包含一些字符串 字符串由以下行组成 ID auto increment Text Date Time Type IDA
  • Google Cloud Run 中的 PHP 服务突然停止响应所有传入请求

    我正在 Google Cloud Run 中运行 PHP 8 1 后端应用程序 后端连接到在 Google Cloud SQL 中运行的 MYSQL 数据库 在过去的两周里 我们发生了三次完全中断的情况 后端服务器不响应任何请求 导致我们的
  • C++ 通过以非抽象子类为参数的方法重写引用抽象类作为参数的纯虚方法

    我有以下代码 struct A f 0 struct Aa A f struct B void foo A 0 struct Bb B void foo Aa 现在我无法创建Bb类实例 因为我没有覆盖foo从课堂上B与所需的参数 我怎样才能