我有一堂课,看起来像这样:
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
的初始化,那么另一个问题是根据标准,变体为“未变形”。
我只想将其初始化为构造函数中的某些默认值,但是如何?
简单地为它分配类型的默认值one