Bir nesneyi veya bir boş değeri döndüren bir işlev için isteğe bağlı yükseltmeyi kullanmaya çalışıyorum ve bunu anlayamıyorum. İşte şimdiye kadar sahip olduğum şey. Bu sorunun nasıl çözüleceğine dair herhangi bir öneri takdir edilecektir.destek kullanarak başarısız girişimi başarısız: isteğe bağlı
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;
}
Güncelleme:
Bu benim yeni kod ve ben İşleviniz aşağıdaki gibi görünmelidir 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}' ile karıştırıldım '' Değer-> a = 200' olacak mı? – MistyD
@MistyD, düzenlemeye bakın. – soon
Düzenleme için teşekkürler.Ancak 'value = {200} ile' 'C2143 hatası 'derleme hatası derledim: sözdizimi hatası:' ' önce '{' ' – MistyD