2017-03-01 22 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;'感謝隱式轉換。 你能接受這個答案嗎? –

相關問題