【发布时间】:2016-07-25 11:38:03
【问题描述】:
这似乎在 C++11 中不起作用:
class B : public A
{
public:
B(const A& a)
: A(a) // parent constructor for passing the parameter
, B() // delegating constructor for init of other members
{};
// ...
};
gcc 告诉我an initializer for a delegating constructor must appear alone。
如何既调用带参数的父类的构造函数,又调用B类的基本构造函数? (我在 B 中有一堆需要相同行为的其他构造函数)。
现在我正在考虑编写一个私有 B::init() 函数并在所有构造函数体中使用它,但这有点 C++03 的味道。
首选的解决方案是什么?
【问题讨论】:
-
为什么不往另一个方向写呢?
B::B() : B(A{}) {}和B::B(const A&a) : A(a), other_member{}{}. -
@Jarod42 为什么不写答案而不是评论?
-
@Barry:不确定我是否错过了什么。
标签: c++ c++11 constructor initializer-list