Ich habe versucht, Boost optional für eine Funktion zu verwenden, die entweder ein Objekt oder eine Null zurückgeben kann und ich es nicht herausfinden kann. Hier ist was ich bisher habe. Vorschläge zur Lösung dieses Problems sind willkommen.fehlgeschlagener Versuch der Verwendung von 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;
}
Update:
Das ist mein neuer Code ist, und ich bin einen Compiler-Fehler bei 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;
}
Ich bin verwirrt mit 'value = {200}' Wird es nicht 'value-> a = 200' sein? – MistyD
@MistyD, schauen Sie sich die Bearbeitung an. – soon
Danke für die Bearbeitung.Aber mit 'Wert = {200};' bekomme ich den Kompilierfehler während der Erstellung 'Fehler C2143: Syntaxfehler: fehlt ';' vor '{' ' – MistyD