У меня есть класс, который выглядит примерно так:
class X
{
std::variant<CComPtr<ID2D1HwndRenderTarget>, CComPtr<ID2D1DCRenderTarget>> mpRenderTarget;
void init();
}
// To early to know which member we need, it's no value until derived class calls init() method.
X::X() : mpRenderTarget(nullptr)
void X::init()
{
// Only here it is known what exactly to initialize!
// and this is going to be in derived class, this one pure virtual.
}
Проблема в том, что этот конструктор не компилируется, потому что инициализация варианта недопустима, однако, если я пропускаю инициализацию mpRenderTarget
в конструкторе тогда другая проблема заключается в том, что вариант «искажен» согласно стандарту.
Я просто хочу инициализировать его в конструкторе по умолчанию, но как?