获取 Base 任何子类的类

2023-12-22

我认为这是一个简单的问题,但我的 C++ 知识也是如此。

我有一个名为 Learner 的课程:

template <class T>
class Learner {
 T* _someRef;
 (...)
}

以及对象继承的基类。

我的想法是让学习者接受任何继承 Base 子类的对象,例如Base1、Base2 等。我可以使用 c++ 11 的 type_traits 断言类型。问题是,我需要为每个基本扩展提供模板专业化,例如:

template Learner<T>::Learner(...) { //implementation };
// However I am required to declare template-specifications for each Base
// derived type, else I'll get compiler errors. This seems useless as
// the generic-inplementation will still be called, but requires me to
// specify a declaration for each Base extension.What if I have n Base
// extensions, makes no sense to do this for 50 Base extensions.
template Learner<Base1>::Learner(...);
template Learner<Base2>::Learner(...);

这在一定程度上违背了我想要实现的目的,因为每个类的操作都是相同的,因为它们都实现了 Base 的虚拟函数。我怎样才能实现这个目标?制定 n 个模板规范似乎不对......它对于少量扩展来说效果很好,但对于大量扩展来说,如果它只是棘手的话。


如果我理解你的问题,我想你正在寻找的是static_assert:

template<typename T>
struct Foo {
   static_assert(is_base_of<Base, T>::value, "T must inherit from Base");
};

对于 C++11,您需要提供一条消息:

http://en.cppreference.com/w/cpp/language/static_assert http://en.cppreference.com/w/cpp/language/static_assert

此外,如果需要,您可以使用 type_traits 在编译时检查上有更多选项:

http://en.cppreference.com/w/cpp/language/static_assert http://en.cppreference.com/w/cpp/language/static_assert

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

获取 Base 任何子类的类 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • Django 静态文件应用程序帮助

    我对 Django 有一个小问题静态文件应用程序 https docs djangoproject com en dev ref contrib staticfiles 我已经添加了 django contrib staticfiles 到
  • React.js - Flux 与全局事件总线

    与全局事件总线相比 使用 Flux 有何优势 我认为调度程序就是所需要的 组件将带有数据的 用户事件 发布到调度程序 调度程序执行订阅商店的处理程序 处理程序发布 更新事件 以及商店的更新属性 调度程序执行订阅组件的处理程序 并使用存储的更
  • 在 python 中将 RAW 图像转换为 TIFF 但保留元数据

    我尝试将原始图像转换为 tiff 但我希望它保留元数据 这是我之前使用的代码 import rawpy imageio os with rawpy imread path as raw rgb raw postprocess imageio
  • Python 浮点格式

    我已经看到了一些与此相关的问题 但我读到的这些问题都没有帮助我真正理解为什么我想做的事情失败了 所以我有一堆浮点值 它们有不同的精度 有些是 0 1 其他是 1 759374 等 我想格式化它们 以便它们全部采用我尝试做的 0 000000
  • ilasm / ildasm 的 Java 字节码等效项

    对于 CIL MSIL 我可以在文本编辑器中编写代码并使用 ilasm ildasm 进行编译 反编译 我可以使用 Reflector 来查看 NET 类生成的 CIL 在Java世界中 javap c显示反汇编的字节代码 如何编译 Jav
  • 保存和删除 NSManagedObject 和 NSManagedObjectContext

    三个问题 但它们都是相关的 如果您愿意 我可以将它们分为三个问题 以便您获得更多学分 如果您愿意我这样做 请告诉我 我有以下代码允许我访问 NSManagedObject self managedObjectContext STAppDel
  • 使用 ipdb 默认进入粘性模式

    调试时使用ipdb 我发现输入很有用sticky模式遵循代码源 有没有办法在粘滞模式下自动输入而无需输入sticky 是的 从REAMDE https github com mverteuil pdbpp configuration and
  • 在 XAML 中为一个事件添加多个事件处理程序?

    在程序代码中可以执行以下操作 Add two event handler for the button click event button1 Click new RoutedEventHandler button1 Click 1 but
  • pow 函数中发生了什么?

    我在这里看到了各种描述奇怪行为的答案powC 中的函数 但我在这里有一些不同的问题要问 在下面的代码中我已经初始化了int x pow 10 2 and int y pow 10 n int n 2 在第一种情况下 当我打印它显示的结果时1
  • 如何在React Native中使用axios将图像上传到服务器?

    我想以本机方式将图像作为文件发送到服务器 我怎样才能做到这一点 这是我的代码 export const editUserProfile sessionId firstName lastName image countryCode phone
  • 如何在javascript中访问对象原型?

    所有文章都写到 JavaScript 是一种基于原型的语言 这意味着每个对象都有一个原型 或者更准确地说 原型链 到目前为止 我已经尝试过以下代码片段 var F function F prototype member1 1 var obj
  • EntityFrameworkCore 不存在于 Microsoft 命名空间中

    我试图在这里逐步完成本教程 https learn microsoft com en us aspnet core data ef mvc intro https learn microsoft com en us aspnet core
  • chrome_omniboxView 类不再可用?

    FindWindowEx Hwnd 0 Chrome OmniboxView Nothing Chrome OmniboxView 不再可用 我怎样才能获得谷歌浏览器的当前网址 我刚刚编写了一个 Chrome 扩展程序来解决这个问题 我已将
  • pandas 输出时间戳 to_excel 以微秒为单位

    我的 df 中有微秒分辨率 这非常重要 但无论我尝试什么 我都无法让 Excel 用 xls 或 xlsx 显示微秒分辨率 关于如何在不显式转换为字符串的情况下显示它们的任何想法 使用 GitHub 上最新版本的 Pandas 以及即将发布
  • 使用 Boost.Spirit.Lex 和流迭代器

    我想使用 Boost Spirit Lex 来 lex 二进制文件 为此 我编写了以下程序 这是摘录 include
  • 创建类似于 xCode 中的太阳天气应用程序的动画渐变背景

    尽管我之前已经问过这个问题 但我想再次联系以澄清我希望在您的帮助下完成什么 我想知道如何在 xCode 中创建一个 iOS 应用程序的背景 类似于 Solar 天气应用程序的背景 提供屏幕截图 随着时间的推移 在一个周期中 略有变化 正如你
  • 编写一个简单的 IRC(互联网中继聊天)客户端

    我很小的时候就开始使用 IRC 并且一直对它着迷 作为一项语言练习 我正在考虑用 Ruby 编写一个简单的 IRC 客户端Shoes http www shoooes net 作为图形前端 我想问您 先生们 我需要熟悉什么才能开始这次伟大的
  • 解析文件名中的反斜杠和正斜杠的混合

    我从 api 获取文件名 格式为包含以下内容的混合 and infilename c mydir1 mydir2 mydir3 mydir4 123xyz csv 当我尝试解析目录结构时 后面的一个字符被转换为单个字符 有没有办法正确获取每
  • Xamarin 表单将单击的项目作为命令参数传递给命令

    我刚刚开始使用 Xamarin 表单 现在我有一个在自定义模板中显示的项目列表 我想要的行为是在页面上下文中触发事件 使用科卡夫行为 https github com corradocavalli Corcav Behaviors 20Co
  • 获取 Base 任何子类的类

    我认为这是一个简单的问题 但我的 C 知识也是如此 我有一个名为 Learner 的课程 template