我目前正在处理一个类层次结构,其中一个类B
继承自A
,并使用C++中允许直接继承构造函数的功能,方式为:
using A::A;
是否有一种方式可以初始化类B
的属性,而不是复制所有现有的构造函数?
类层次结构如下,不使用构造函数继承,可以成功编译:
class A
{
public:
A (int a)
{}
};
class B
:
public A
{
public:
B (int a)
:
A(a),
blubb(a)
{}
float blubb;
};
使用构造函数继承和Revolver_Ocelot提出的答案,代码如下:
class A
{
public:
A (int a)
{}
};
class B
:
public A
{
public:
using A::A;
float blubb {a};
};
以下是编译时出现的错误信息:
foo.cpp:21:22: error: ‘a’ was not declared in this scope
float blubb {a};
^
foo.cpp:21:23: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘float’ in initialization
float blubb {a};
^