Wie kann man diese Warnung verhindern?



  • Steuerelementpfade

    Lass' mich raten: Microsoft. Unübertroffen! 🙄

    Wenn Du sagst, daß SearchPred ein tree_element1* zurückgibt, dann mußt Du das auch tun.



  • vip@r schrieb:

    Das der Compiler immer Recht hat, ist klar, aber was hab ich dann falsch gemacht?

    Du Sündiger hast den Compiler verärgert! Steinigt ihn!

    Spaß beiseite, es gibt Fälle in denen die Funktion nichts zurückgibt und das Programm abstürzt.



  • vip@r schrieb:

    Mir ist klar, dass die Warnung dadurch kommt, weil zwischen den zwei letzten beiden schließenden Klammern kein return mehr steht. Ich kann aber da kein return 0; oder sowas zurückgeben weil mir sonst mein eigentlich wichtiger Wert nicht mehr zurückkommt, der in Zeile 6 zurückgegeben werden soll!

    Wie verhindere ich die Warnung nun?

    Wenn du in deinen Else-If-Zweig (oder Else-Zweig) drin bist bekommst du nie dein Return davor.

    Nachtrag:

    Wenn du nicht was ich mein, nutzt dein Debugger, evtl. an ein Zahlenbeispiel.

    Falls du nicht weiß, wovon ich rede, teste dein Programm im Debugger durch, oder anhand eine kleinen Beispiel.



  • Zeus schrieb:

    Wenn du nicht was ich mein, nutzt dein Debugger, evtl. an ein Zahlenbeispiel.

    Hihi. Ich nicht was du mein, nutz' mein Debugger an Beispiel! 🤡



  • hustbaer schrieb:

    Zeus schrieb:

    Wenn du nicht was ich mein, nutzt dein Debugger, evtl. an ein Zahlenbeispiel.

    Hihi. Ich nicht was du mein, nutz' mein Debugger an Beispiel! 🤡

    *Urgh* Hustbaer's Dolch durchstößt mein Herz von hinten.



  • Interessant, wer hier so wen von hinten durchstößt. gnihihi



  • 314159265358979 schrieb:

    Interessant, wer hier so wen von hinten durchstößt. gnihihi

    Sei des Vorsicht, sonst verfluche ich dich aus den jenseits heraus!



  • 314159265358979 schrieb:

    Interessant, wer hier so wen von hinten durchstößt. gnihihi

    Du bist ja nur neidisch. gnöhöhö hust

    Mir ist klar, dass die Warnung dadurch kommt, weil zwischen den zwei letzten beiden schließenden Klammern kein return mehr steht. Ich kann aber da kein return 0; oder sowas zurückgeben weil mir sonst mein eigentlich wichtiger Wert nicht mehr zurückkommt, der in Zeile 6 zurückgegeben werden soll!
    

    Musst du aber, wenn du nicht im Schlimmfall Scheiße bauen willst.
    Überprüfe genau deswegen immer den Rückgabewert solcher Funktionen

    if(auto ptr = searchPed(otherPtr, otherObjet))
        doSomethingWithPtr(ptr):
    


  • vip@r schrieb:

    Wie verhindere ich die Warnung nun?

    #pragma warning( disable : 4715 )
    

    *duck 'n run*



  • Mir entzieht sich gerade was der Code überhaupt tun soll. Bzw. wenn ich es doch richtig verstehe, warum er es so kompliziert tun soll.

    // Returns
    //    (root, 0)            if the value is found in the root node
    //    (node, parent_node)  if the value is found in any other node
    //    (0, parent_node)     if the value isn't found at all
    std::pair<tree_element1*, tree_element1*> searchtree1::SearchNode(object needle)
    {
        return SearchNodeImpl(needle, root, 0);
    }
    
    // private helper function
    std::pair<tree_element1*, tree_element1*> searchtree1::SearchNodeImpl(object needle, tree_element1* node, tree_element1* parent)
    {
        if (!node)
            return std::make_pair(node, parent); // Not found
        else if (node->val == needle) 
            return std::make_pair(node, parent); // Done
        else if (node->val > needle)
            return SearchNodeImpl(needle, node->left, node); // Decend into left subtree
        else
            return SearchNodeImpl(needle, node->right, node); // Decend into right subtree
    }
    

    Oder so.


Anmelden zum Antworten