2017-03-01 64 views
0

我想学习C++ 17如何初始化的std ::可选的用户定义的数据类型的

新功能,请找到下面的代码:

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 

如何初始化它?

+0

'std :: optional'将在C++ 17中。 – Zereges

+0

@Zereges是它的C++ 17。但我想知道如何在声明后初始化它。 – sagar

+4

请注意,您在声明时进行初始化。在声明它之后,您只能分配给它。 – NathanOliver

回答

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

---->这是正确的??

是的。你也可以这样做:

obj.test = Test(10); 
+0

非常感谢您的时间和回复。 – sagar

+0

您也可以像这样使用它:'obj.test = 10;'感谢隐式转换。 你能接受这个答案吗? –

相关问题