私は、オブジェクトまたはnullを返す可能性のある関数にboostオプションを使用しようとしていました。ここまで私がこれまで持っていたことがあります。この問題を解決する方法についてのご意見をいただければ幸いです。boost :: optionalの使用に失敗しました
class Myclass
{
public:
int a;
};
boost::optional<Myclass> func(int a) //This could either return MyClass or a null
{
boost::optional<Myclass> value;
if(a==0)
{
//return an object
boost::optional<Myclass> value;
value->a = 200;
}
else
{
return NULL;
}
return value;
}
int main(int argc, char **argv)
{
boost::optional<Myclass> v = func(0);
//How do I check if its a NULL or an object
return 0;
}
更新:
は、これは私の新しいコードであると私はあなたの関数は次のようになりますvalue = {200};
class Myclass
{
public:
int a;
};
boost::optional<Myclass> func(int a)
{
boost::optional<Myclass> value;
if(a == 0)
value = {200};
return value;
}
int main(int argc, char **argv)
{
boost::optional<Myclass> v = func(0);
if(v)
std::cout << v -> a << std::endl;
else
std::cout << "Uninitilized" << std::endl;
std::cin.get();
return 0;
}
私は 'value = {200}'と混乱します。それは 'value-> a = 200'になりませんか? – MistyD
@MistyD、編集を見てください。 – soon
編集していただきありがとうございます。しかし、 'value = {200};では'エラーC2143:構文エラー:ありません 'のビルド中にコンパイルエラーが発生しました' before '{' ' – MistyD