Referenzen und Zeiger als Parameter


  • Mod

    UnterKind schrieb:

    Meine Frage: Kann das überhaupt funktionieren? Ich hab gelernt das Funktionen nicht den selben Namen haben können es sei den ihr Datentyp unterscheidet sich.

    Sind denn deiner Meinung nach Referenzen und Zeiger der gleiche Datentyp?

    Allerdings weiß ich nicht so genau was mir die Fehlermeldung sagen möchte

    Sie will dir sagen, dass du eine Funktion double inputValue (double, double); deklariert hast (das hast du in deinem ersten Codefragment getan), die aber nirgendwo definiert wird (denn du definierst die beiden Funktionen double inputValue (double&, double&); und double inputValue (double*, double*); , die für den Linker vollkommen unterschiedlich aussehen.



  • Mir war nicht klar das Zeiger/Referenzen als eigener Datentyp gelten. Für mich galten als eigene Datentypen einfach nur int,string,double,structs etc.

    Ich hab dann jetzt mal direkt mein neues wissen angewandt. Meine Funktionsprototypen und die Funktionen selber mit den passenden Sachen erweitert und tada es lässt sich kompilieren, Also danke für die Hilfe! 👍.

    Wobei ich gestehen muss das ich jetzt schon wieder mein nächstes Problem hab und zwar das in meiner Funktion die referenzen die Originalwerte nicht umändern...



  • Doch müssten sie aber. Sowohl Zeiger als auch Referenzen verweisen ja auf das ursprüngliche Objekt/Variable.

    Zur Not, zeig Code



  • @UnterKind
    Wozu dienen eigentlich die Rückgabewerte dieser Funktionen. Die sind hier vollkommen sinnlos.



  • Als ich die Funktionen geschrieben hab hab ich denen den double Wert gegeben mir war zu dem Zeitpunkt nicht klar ganz klar das die Funktionen keinen rückgabewert haben. Und da ich keine Lust hatte alle funktionen auf Void umzustellen hab ich lieber return(0); reingesetzt.

    Das Programm funktioniert jetzt hab mich einfach nur sehr deppert angestellt.



  • return((0));
    sieht aber noch besser aus. Damit man deutlich sieht, daß da was zurückgegeben wird und man es nicht mit einem Funktionsaufruf verwechselt.



  • Na ja, da es double sein soll eher return((0.0)); 🙂



  • Oder einfach komplett ohne Klammern: return 0.0



  • Braunstein, anstatt double durch void zu ersetzen, hast du return (0) eingefügt, weil das Erstere dir umständlicher erschien. Ergibt dir das Sinn?
    Nochwas: du solltest mal die magische Tastenkombination Strg + H und die Wunder, die sie bewirkt, sehen.



  • Lies bitte den Thread nochmal. Nicht ich habe return(0) eingeführt. Der Smily sollte auch ein wenig darauf hindeuten, dass das Ironie in Erweiterung zu volkards Beitrag ist.


Anmelden zum Antworten