return einer funktion bei



  • was gibt man zurueck wenn eine funktion fehlschlaegt

    Bsp:
    Point3D Schnitt(Line3D,Line3D)
    {
    //parallel
    return Point3(numeric_limits<double>:infinity());
    // in dem fall sicher mathematisch richtig
    //oder
    return Point3(numeric_limits<double>:quiet_NaN());
    // kann ich irgendwie nicht auf val==numeric_limits<double>:quiet_NaN() testen
    //oder
    return Point3(numeric_limits<double>:signaling_NaN());
    }



  • Einen ungültigen Wert 🤡

    Das kann man Pauschal nicht sagen.

    Bei Zeigern ist es z.B. NULL bei bool false etc.

    Man sucht sich einen Wert den man als ungültig definiert und gibt ihn zurück.
    Gibt es diesen nicht kann man folgendes tun:

    bool als Rückgabe und den eigentlichen Wert in eine Variable schreiben die man
    per Zeiger / Referenz als Parameter bekommen hat

    oder

    Eine Expetion werfen.

    [edit]Mal wieder die smilies *grml*[/edit]

    [ Dieser Beitrag wurde am 08.05.2003 um 14:47 Uhr von Knuddlbaer editiert. ]



  • Gern werden int als Rückgabewert verwendet (oder zumindest ist es eine Philosophie). Den 'inhaltlichen' Rückgabewert, bekomm man durch eine Refernz oder Pointerübergabe bei den Paramentern.
    Der Rückgabewert wird dann als Erfolg(0) oder Fehlercode( ungleich 0) interpretiert. Der von von Null verschiedene Werrt wird dann meist mittels #define's einem Fehlercode zugeordnet.(Die Winapi nutzt diese Methode oft).
    Ich persönlich finde das auch so am praktischten und verwendete das auch bei eigenen Funktionen so, wenn es sich anbietet.

    Grüß Flow



  • wenn man sich mein Bsp ansieht, sieht mann auf was ich hinaus wollte.
    die frage ist ob man aus der std quiet_NaN oder signaled_NaN oder infinity nimmt.
    der check auf quiet_NaN bringt aber irgendwie immer true auch gegen 999.999 double.
    ich kann auch nich einfach Null zurueckgeben denn das ist manchmal ja ein moeglicher wert.
    mann sollte sich das so vorstellen.

    input: Vector auf 3D Punkte
    Rueckgabe vector aud double

    da hilft auch kein bool return...



  • Original erstellt von Flow_cplus:
    Gern werden int als Rückgabewert verwendet (oder zumindest ist es eine Philosophie). Den 'inhaltlichen' Rückgabewert, bekomm man durch eine Refernz oder Pointerübergabe bei den Paramentern.

    ja, leider.
    aber es ist trotzdem nicht gut 😞


Anmelden zum Antworten