Rückgabewerte von Funktionen



  • Hi,
    ich wollte mal fragen, ob es eine Möglichkeit gibt, sich von einer Funktin ein Feld zurückgeben zu lassen.
    Bisher habe ich es immer so gemacht:
    void funktion(int in, int *out[3])
    {
    ...
    }

    Ich suche nach einem besseren Weg, falls es einen gibt.



  • nicht gut.
    das geht nur über 'tricks' wie zB smart pointer oder container (zB std::vector)

    aber deine methode ist die gängige.



  • void funktion(int in, int *out[3])
    

    genau das ist auch die gängigste lösung
    man könnte sich das [3] hier allerdings sparen 🙂
    alternativ kann man natürlich per new allozierten speicher aus einer funktion wie:

    int* funktion(int in)
    

    zurückgeben das ist aber keine gute idee weil man zu gerne vergisst den speicher wieder frei zu machen. also: DONT USE!

    eine andere möglichkeit ist es pointer auf static arrays zurückzugeben aber da muss man wiederum aufpassen das man das array kopieren sollte bevor man damit arbeitet weil es beim nächsten aufruf der funktion wieder überschreiben wird.
    dann kann man natürlich noch einen std::vector zurückgeben allerdings wird der dann so quasi by value zurückgegeben was unter umständen ziemlich teuer ist...

    ich selber denke, dass die lösung die du schon beschreiben hast die beste ist... aber das ist natürlich immer von der situation abhängig...

    [ Dieser Beitrag wurde am 11.05.2003 um 19:34 Uhr von japro editiert. ]



  • Danke.

    Ich dachte es gibt noch eine andere "gute" Möglichkeit, aber scheinbar nicht.


Anmelden zum Antworten