如何初始化用户定义数据类型的std :: optional

时间:2017-03-01 17:00:35

标签: c++ c++17

我正在尝试学习C ++ 17的新功能。

请找到以下代码:

class Test
{
public:
      Test(int x):y(x){}
      ~Test(){}
      int getx()
      {
          return x;
      }
private:
      int x;
};
struct Container
{
    std::optional<Test> test;
};
int main()
{
    struct Container obj;
    // here i want to initialize the member "test" of 
    // struct Container
    obj.test = make_optional<Test>(10); ----> is this correct??
}

有人可以告诉我如何初始化std::optional吗?例如,如果我声明它:

std::optional<Test> t

如何初始化它?

1 个答案:

答案 0 :(得分:3)

obj.test = make_optional<Test>(10);
  

----&GT;这是正确的吗?

是的。你也可以这样做:

obj.test = Test(10);