我正在尝试通过派生类初始化基类成员项。我遇到的问题是我传递的值取决于“x”。 所以这就是我正在做的事情:
Derived:: Derived()
{
uint8 number = getNumber();
P p;
if (number == 3)
{
p = P1;
}
else
{
p = P2;
}
Base(p);
}
我收到错误“类没有默认构造函数”Base“。我做错了什么?
答案 0 :(得分:3)
您只能在构造函数的成员初始值设定项列表序列中初始化基类。如果需要调用其他代码,可以将其委托给辅助函数:
P calculate_p() {
uint8 number = getNumber();
if (number == 3)
return P1;
return P2;
}
Derived::Derived() : Base(calculate_p())
{
}