初始化std :: variant ?

问题描述 投票:0回答:1

我有一堂课,看起来像这样:

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的初始化,那么另一个问题是根据标准,变体为“未变形”。

我只想将其初始化为构造函数中的某些默认值,但是如何?

c++ smart-pointers variant
1个回答
0
投票

简单地为它分配类型的默认值one

© www.soinside.com 2019 - 2024. All rights reserved.