由using declaration指定的构造函数
Constructor nominated by using declaration
我想声明一个成员名,它是基类的构造函数,如下所示:
#include <iostream>
class A{ };
class B: public A
{
using A::A; //error: ‘A::A’ names constructor
};
int main()
{
}
在哪里指定了不能使用声明接受构造函数?
在哪里指定了不能使用声明接受构造函数?
无处可去,因为它可以。参见12特殊成员函数:
12.9继承构造函数[class。inhctor]
为构造函数命名的using声明(7.3.3)隐式声明了一组继承的构造函数。从using声明中指定的类X继承的候选构造函数集由实际构造函数和由默认参数转换产生的概念构造函数组成,如下所示:
- X的所有非模板构造函数,和
-对于至少有一个带默认实参形参的X的每个非模板构造函数,省略任何省略形参说明并从形参类型列表末尾连续省略带默认实参形参的构造函数集,以及
- X的所有构造函数模板,和
-对于X的每个至少有一个带默认实参形参的构造函数模板,省略任何省略形参说明并从形参类型列表末尾连续省略带默认实参形参的构造函数模板集。
…
下面是一个例子:
struct A
{
explicit A(int) {}
};
struct B: A
{
using A::A;
};
int main()
{
B b{42};
}
相关文章:
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 选择要调用的构造函数
- 如何委托派生类使用其父构造函数?
- 构造函数正在调用一个使用当前类类型的函数
- 没有用于初始化C++中的变量模板的匹配构造函数
- 初始化具有非默认构造函数的std::数组项的更好方法
- 当从函数参数中的临时值调用复制构造函数时
- 在c++构造函数中使用随机字符串生成器
- C++ 默认构造函数在移动和复制构造函数存在时不随"using"继承
- 使用 "using" 关键字继承基类的复制和移动构造函数
- 在本地将 'using std::foo' 指令应用于构造函数初始值设定项列表 (C++)
- 什么是“using”,以及C++中构造函数后面的冒号是什么
- using语句可以出现在构造函数初始化列表中吗?
- 由using declaration指定的构造函数
- "using" (typedef) 指针:它的默认构造函数返回 nullptr?
- 调用基类构造函数的"Using"关键字