用多态函数覆盖模板化函数

2024-03-02

如果我有

template<class T>
TalkyBuffer& operator<<(T const &object) { // Template
...
}
TalkyBuffer& operator<<(TalkySerialisable const &object); // Override

和一个班级

class A : public TalkySerialisable {
...}

那么如果我执行

TalkyBuffer b;
A test;
b << test;

然后 gcc 正在调用 Template 函数而不是 Override 函数

但是,如果我专门定义一个覆盖

TalkyBuffer& operator<<(A const &object); // Override without polymorphism

然后 gcc 选择那个。 有没有一种实用的方法可以用抽象类覆盖模板化函数?

我读过这篇文章,但它并没有阐明当你将多态性融入其中时会发生什么:http://www.gotw.ca/publications/mill17.htm http://www.gotw.ca/publications/mill17.htm另外,我在这里找不到解决方案,但也许我使用了错误的术语。


定义函数时TalkyBuffer& operator<<(TalkySerialisable const &object);你没有凌驾于一切之上。您正在重载 tmeplate 函数。

但是,当编译器看到b << test;,它会搜索一个想要的操作符A。它有一个,它是不需要自动转换的模板化函数。这是最好的选择。

重载函数需要对参数进行自动转换(从 A 到 TalkySerialisable)以适合声明,这不是最佳选择。

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

用多态函数覆盖模板化函数 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • char指针或char变量的默认值是什么[重复]

    这个问题在这里已经有答案了 下面是我尝试打印 char 变量和指针的默认值 值的代码 但无法在控制台上看到它 它是否有默认值或只是无法读取 ASCII 范围 include
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new

随机推荐

  • 为一个别名加载 Java KeyStore?

    有谁知道是否可以加载密钥库 以便仅提示输入给定别名的密码 Example 在我的密钥存储中 我有两个私钥 Alice 的加密证书和 Bob 的加密证书 当我加载我的密钥存储时 keyStore KeyStore getInstance Wi
  • 如何创建私有远程perforce分支并推送到它?

    熟悉git 第一次使用perforce 我正在开发自己的功能 我不想将其推送到主线远程存储库 我需要类似 git 远程分支的东西 其中 我可以提交我的更改 就像是git commit 我可以推送到不合并的远程私有分支 就像是git push
  • 带有枚举输入参数的 Webapi post 方法

    当尝试调用采用枚举作为输入参数的 Web API 方法时 为什么会出现下面屏幕截图中的错误 我该如何解决这个问题 看起来像messageDestinationType无论我做什么始终为空 我更愿意将输入类型保留为枚举 我对使用 Web ap
  • 如何修复导入错误:无法从plotly(python)导入Dash中的名称“Event”?

    我正在研究数据可视化任务 其中使用了plotly python 中的Dash 当我运行代码时 我收到一个错误 导入错误 无法导入名称 事件 我尝试了各种安装过程 例如 pip install events 或 pip install Eve
  • 如何在 @RequestParam() 中将默认值指定为整数

    我是新来的弹簧靴和学习 RequestParam 我知道我们可以在字符串中给出默认值 但是当我尝试将默认值作为整数给出时 它向我显示一个错误 RequestMapping returnVeriable public int getVeria
  • playframework 中的分页

    我想在 Play FrameWork 中实现分页 是否有任何教程或示例 我已经浏览了那里的网站并完成了教程 但无法实现分页 Thanks 我已经实现了很多页面play 使用播放分页模块 http www playframework org
  • 如何隐藏exe或dll中的字符串?

    我发现可以从二进制文件中提取硬编码字符串 例如属性视图流程浏览器 http technet microsoft com en us sysinternals bb896653 aspx显示所有超过 3 个字符的字符串 这是我为了简单测试而编
  • 有没有办法编译node.js源文件? [复制]

    这个问题在这里已经有答案了 有没有办法编译一个node js http nodejs org 应用 我可能很晚了 但你可以使用 nexe 模块在一个可执行文件中编译nodejs 你的脚本 https github com crcn nexe
  • MediaMetadataRetriever.getFrameAtTime() 仅返回第一帧

    我使用 MetadataRetriever 从视频中提取了帧 并将所有图像存储在ArrayList
  • Vue-Router:类型错误:this._router.init 不是函数

    我已经安装了 vue router 在 Laravel 项目中 然后尝试使用它 import VueRouter from vue router Vue use VueRouter 然后我得到这个 Vue warn Error in bef
  • Android位置请求PRIORITY_HIGH_ACCURACY没有效果

    我的 Android 应用程序需要高精度位置跟踪 应用程序启动时 它会以编程方式读取位置设置 并在以下情况下显示一个屏幕 高准确率未选择 我改编了Google官方的例子 https developers google com android
  • org.jboss.as.server.deployment.DeploymentUnitProcessingException:在 ws 端点部署中检测到 Apache CXF 库

    我正在使用 Eclipse Juno 和 WildFly 8 2 并尝试使用 ws security 部署肥皂 Web 服务 这是我的参考网站 https docs jboss org author display JBWS WS Secu
  • 生成随机 IPv6 地址

    在Python中 如果我想生成一个IP v6地址形式的随机字符串 该怎么办 例如 ff80 220 16ff fec9 1 fe80 232 50ff fec0 5 fe20 150 560f fec4 3 等 有人可以给我一些帮助吗 一线
  • Imgur API 上传

    于是就有了这行代码 String data URLEncoder encode image UTF 8 URLEncoder encode Base64 encodeBase64String baos toByteArray toStrin
  • Google Compute Engine 分配静态 IP 定价?

    当我们为 Compute Engine 实例分配静态 IP 时 我们是否需要为该实例支付额外费用 我已阅读他们的文档 但没有找到有关该功能定价的任何信息 UPDATE 自 2020 年 1 月 1 日起 静态和临时外部 IP 在使用时按 0
  • 将数组拆分为大小相等的窗口[重复]

    这个问题在这里已经有答案了 我正在尝试拆分numpy array长度为 40 的较小的 大小相等的numpy arrays 其中较小数组的数量由用户给出 较小数组之间允许有一些重叠 因为在给定较小数组某种形式的重叠的情况下 可能会出现全长只
  • 在 SOAP 消息中使用 XSLT 替换命名空间 uri

    我有一条输入肥皂消息 试图用不同的字符串替换命名空间 URI 的一部分 我可以用不同的 URI 替换整个 URI 但无法修改现有的 URI 我需要查找 OLDSTRING 并替换为 NEWSTRING 字符串 VARIABLESTRING
  • 在 Solr 中增强布尔字段

    是否可以提高 Solr 中的布尔字段以便获得更高的分数 我们有一个索引 看起来有点像这样 文档ID title 描述 keywords 已审阅 搜索时 已审阅的文档 即 is reviewed true 的权重应高于未审阅的文档 而不是完全
  • VoiceXML 录制整个通话,包括菜单选项

    我正在尝试使用 VoiceXML 在 Nexmo 上 录制整个电话 我可以单独进行录音或给出菜单提示并转接呼叫 但我不知道如何同时执行这两项操作 我想从头到尾记录通话 包括转接的通话部分 我想象 VoiceXML 看起来像这样 但这不是有效
  • 用多态函数覆盖模板化函数

    如果我有 template