2017-03-01 1 views
0

を初期化する方法を次のコード見つけてください:のstd ::ユーザ定義のデータ型のオプションの私はC++ 17</p> <p>の新機能を習得しようとしています

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 Yes in its C++ 17。しかし、私は宣言後にどのように初期化できるのか知りたい。 – sagar

+4

宣言時に初期化することに注意してください。宣言した後は、それだけに割り当てることができます。 – NathanOliver

答えて

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

---->これは正しいです?

はいです。

obj.test = Test(10); 
+0

ありがとうございました。 – sagar

+0

次のように使用することもできます:暗黙の変換のおかげで 'obj.test = 10;' この回答を受け入れてください。 –

関連する問題