C++17から使えるようになった値型にもnullのような無効な値を指定できるnulloptの使い方です。
宣言
ヘッダー宣言
#include <optional> // 使うときはこれを宣言する
判定方法
std::optional を受け取ったときの判定方法
// (1) サンプル用のクラス class Sample { public: int foo(); } // (2) optionalを取得する関数 std::optional<Sample> getSample(); // (3) 受け取ったときの処理 main() { std::optional<Sample> value = getSample(); if(value == std::nullopt) // 無効値はstd::nullopt(構造体)で判定できる { // 無効値が設定されている場合 std::cout << "value is nullopt" << std::endl; } else { // 有効な値が設定されている場合 int temp = value.foo(); std::cout << temp << std::endl; } }
optionalの作成方法
optional の作り方。optional な変数に値を代入すれば作成できる。
// 普通に代入できる Sample s; std::optional<Sample> value = s;
型がコンテキストから推測できるなら自動で変換されるケース
std::optional<Sample> getSample() { Sample s1; auto opt = (std::optional<Sample>)s1; // 変換できる Sample ss; return ss; // ここで暗黙的に変換してくれる }
以上