Я понимаю, что в C ++ 11 делегирование конструктора может выглядеть так:
class Foo
{
public:
Foo()
{
// Some code to be ran first
}
Foo(std::string bar): Foo() // Runs the code to be ran first
{
// Some code to be ran second, presumably using bar
}
};
Я хочу знать, как каким-то образом перевернуть эту ситуацию. А именно, в случае вызова конструктора Foo()
я хочу запустить некоторый код, чтобы выяснить значение для std::string
, которое затем будет использоваться Foo(std::string bar)
для завершения инициализации. Таким образом, Foo()
запускает как собственный код, так и код в Foo(std::string bar)
, тогда как последний выполняет только свой собственный код, что-то вроде
class Foo
{
public:
Foo()
{
std::string bar_figured_out;
// Figures out the value for bar_figured_out
Foo(bar_figured_out); // I know this wouldn't work, just an example of what I'm trying to do.
}
Foo(std::string bar):
{
// Some code to finish class initialization, using bar
}
};
Есть ли способ выполнить это с помощью делегирования конструктора?