使用 C++ 基类构造函数?

2024-04-13

在使用模板时,我遇到需要使基类构造函数可从继承类访问以创建对象,以减少复制/粘贴操作。 我想通过这样做using关键字与函数 case 的方式相同,但不起作用。

class A
{
public: 
    A(int val) {}
};

class B : public A
{
};

class C : public A
{
public:
    C(const string &val) {}
};

class D : public A
{
public:
    D(const string &val) {}
    using A::A;              // g++ error: A::A names constructor
};

void main()
{
    B b(10);                // Ok.   (A::A constructor is not overlapped)
    C c(10);                // error: no matching function to call to 'C::C(int)'
}

所以我的问题:在声明继承类中的新构造函数之后,有什么方法可以导入基类构造函数吗?

或者只有一种选择来声明新的构造函数并从初始值设定项列表中调用基本构造函数?


是的,从 C++11 开始:

struct B2 {
    B2(int = 13, int = 42);
};
struct D2 : B2 {
    using B2::B2;
// The set of inherited constructors is
// 1. B2(const B2&)
// 2. B2(B2&&)
// 3. B2(int = 13, int = 42)
// 4. B2(int = 13)
// 5. B2()

// D2 has the following constructors:
// 1. D2()
// 2. D2(const D2&)
// 3. D2(D2&&)
// 4. D2(int, int) <- inherited
// 5. D2(int) <- inherited
};

有关更多信息,请参阅http://en.cppreference.com/w/cpp/language/using_declaration http://en.cppreference.com/w/cpp/language/using_declaration

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

使用 C++ 基类构造函数? 的相关文章

  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 等待 IAsyncResult 函数直至完成

    我需要创建等待 IAsyncResult 方法完成的机制 我怎样才能做到这一点 IAsyncResult result contactGroupServices BeginDeleteContact contactToRemove Uri
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli

随机推荐

  • 如何将数据从服务器代码传递到ejs模板?

    我有一个简单的服务器 我可以通过浏览器完美地获取 url 上的数据 我正在尝试获取 ejs 模板中的数据 这就是我获取数据的方式 app get some function req res next var size 3 var curr
  • 使用 LINQ 使用 2 个列表创建字典

    我正在尝试从 2 个列表创建一本字典 其中一个列表包含键 一个列表包含值 我可以使用 for 循环来完成此操作 但我正在尝试查找是否有一种使用 LINQ 来完成此操作的方法 示例代码会很有帮助 谢谢 在 NET4中你可以使用内置的Zip h
  • 如何更改杰克逊的默认具体地图类型?

    我有一个非常简单的 Jackson 代码来反序列化嵌套的 JSON 对象 public class MapTest public static void main String args throws Exception final Str
  • Servlet 中的 iText PDF

    因此 我正在使用此代码从我的服务器创建一个报告 PDF 文件 response setHeader Expires 0 response setHeader Cache Control must revalidate post check
  • 当超级视图完成加载时调整子视图的大小

    我知道有无数类似的问题 要么全部导致使用灵活的高度 宽度 要么将 TranslatesAutoresizingMaskIntoConstraints 设置为 false 我使用我创建的扩展添加了一个视图 extension UIView f
  • 大师必须从纱线、火花开始

    当我想要运行 SparkPi 示例时 我收到此错误 beyhan beyhan spark 1 2 0 bin hadoop2 4 home beyhan spark 1 2 0 bin hadoop2 4 bin spark submit
  • Scala 中的十六进制字符串到 Int、Short 和 Long

    只是找不到在 Scala 中将十六进制字符串转换为数字 Int Long Short 的方法 有没有类似的东西 A toInt base 您可以使用 Java 库 val number Integer parseInt FFFF 16 gt
  • 在 iOS7 上停止 Safari 提示保存卡片数据

    我有一个客户网站 提示他们在 iOS7 下保存卡详细信息 我完全找不到任何关于如何或是什么导致 iOS 决定这是正确的事情的信息 有人有任何想法吗 我们遇到了这个问题 正如 Guy Thomas 提到的 这是因为表单中的密码字段带有抄送字段
  • 有什么方法可以格式化 Plotly for Python 漏斗图中的数字吗?

    我有一个漏斗图 其中一些值大于 9000 这些值用带 K 的点符号显示 表示末尾有千 我花了 20 分钟在 Google 和 Plotly 文档中查找 但未能找到关于如何格式化数字的明确答复 这是输入数据 这是我正在使用的代码 fig px
  • v-bind:style 语法在内联样式中不起作用

    我对 Vue 和整个系统都很了解v bind事情让我陷入困境 基本上 我正在尝试实现这种语法 但是使用 Vue 的v bind 因为我不能在内联 CSS 样式中使用变量 div class card style background col
  • Bash 中使用 if-else 进行整数比较

    我有一个变量叫做choice 现在 我尝试使用 if 来比较输入的值 read choice if choice 2 then do something elif choice 1 then do something else else e
  • 如何打印我的 Java 对象而不得到“SomeType@2f92e0f4”?

    我有一个类定义如下 public class Person private String name constructor and getter setter omitted 我尝试打印我的类的一个实例 System out println
  • 访问表的第n列

    我有一个包含以下结构和数据的表 tr td td tr
  • 服务绑定到活动

    这是我的代码 public class MainActivity extends Activity private ComponentName mService private Servicio serviceBinder private
  • Checkstyle,无法创建根模块

    我正在尝试在项目中配置 Checkstyle 我已经添加 apply plugin checkstyle checkstyle assign the latest checkstyle version explicitly default
  • 如何通过 selenium-webdriver 和 Java 使用 java 实现鼠标悬停

    在尝试实现门户自动化时http demo nopcommerce com http demo nopcommerce com 我无法将鼠标悬停在 电子 菜单上并选择 相机和照片 子菜单 使用以下脚本进行相同的操作 WebElement el
  • 为什么 Matplotlib 颜色图的结构不同?

    我能够绘制 RGB 分量some使用这个简单的 Python 脚本绘制 Matplotlib 颜色图 import numpy as np import matplotlib pyplot as plt from matplotlib im
  • R Shiny:渲染summary.ivreg输出

    我正在尝试在 R Shiny 中呈现工具变量回归摘要 这是代码 iv ivreg lwage educ exper nearc4 exper summary iv 当我使用 renderTable 时 出现以下错误 没有适用于 xtable
  • angular2动态表格计算金额总计

    尝试计算总 payOffs amount payOffs 是一个 FormArray 不知道如何正确执行 以便总数会观察到当前金额和新金额的变化 这是我作为基本代码的 plnkr http plnkr co edit nHSIsciSZNT
  • 使用 C++ 基类构造函数?

    在使用模板时 我遇到需要使基类构造函数可从继承类访问以创建对象 以减少复制 粘贴操作 我想通过这样做using关键字与函数 case 的方式相同 但不起作用 class A public A int val class B public A