C++ で親イニシャライザを呼び出すためのこのコードがあります。
#include <iostream>
using namespace std;
class A
{
public:
A(const string& a) {}
};
class B : public A
{
public:
B(const string& b) : A(b) {}
};
このように親イニシャライザで少し装飾できると思います。
B(const string& b) : A(b + "!!") {}
では、親イニシャライザを設定するための決定ロジックが必要な場合はどうでしょうか? これを試しましたが、エラーメッセージが表示されました。
B(const string& b) {
if (...) {
A(b + "x");
} else {
A(b + "y");
}
}
>> ERROR
hier.cpp: In constructor 'B::B(const string&)':
hier.cpp:16:2: error: no matching function for call to 'A::A()'