gegenseitiges includieren



  • WhileTrueDo schrieb:

    könntest du basierend auf der player.h und der map.h die bereits herausgegeben habe eine solche forward deklaration durchführen ?

    Wenn du lesen würdest und mit einer priese google und einem Buch vielleicht einfach mal versuchst zu lernen anstatt nach komplett Lösungen zu heulen hättest du das schon seit gestern längst gelöst.



  • daddy_felix schrieb:

    WhileTrueDo schrieb:

    könntest du basierend auf der player.h und der map.h die bereits herausgegeben habe eine solche forward deklaration durchführen ?

    das hat Skym0sh0 schon auf der ersten Seite getan.

    Danke, ich dachte meine Posts sind unsichtbar.



  • dass habe ich schon versucht und es wird auch gezeigt wie es geht, ich möchte es aber auch verstehen deswegen bin ich auf diesem forum, ich dachte hir bekomme ich hilfe in form von lösungen und antworten also ich bitte dich sehr dolle zeig mir die lösung


  • Mod

    WhileTrueDo schrieb:

    dass habe ich schon versucht und es wird auch gezeigt wie es geht, ich möchte es aber auch verstehen deswegen bin ich auf diesem forum, ich dachte hir bekomme ich hilfe in form von lösungen und antworten also ich bitte dich sehr dolle zeig mir die lösung

    Du hast eine Lösung auf Seite 1 und du hast danach noch Erklärungen erhalten und du hast danach noch Hinweise erhalten, was man allgemein besser machen könnte. Was möchtest du mehr? Maoam? Satzzeichen?



  • ich möchte dass meine funktionen in dieses beispiel eingebaut werden und ich verstehe nicht wie ich die verbesserungen umsetzen soll



  • WhileTrueDo schrieb:

    ich möchte dass meine funktionen in dieses beispiel eingebaut werden und ich verstehe nicht wie ich die verbesserungen umsetzen soll

    Lesen und selber machen. Nicht machen lassen so verstehst du nichts.



  • Dann versuch doch als erstes, ein Objekt als "call-by-reference" an eine Funktion zu übergeben.

    class Test
    {
      public:
        int a;
    }
    
    void ChangeMember(Test param) // dies ist "call-by-value". Bitte ersetzen durch "call-by-reference"
    {
      param.a = 20;
    }
    
    int main()
    {
      Test testObject:
      testObject.a = 10;
    
      cout << "testObject.a: " << testObject.a << "\n";
    
      ChangeMember(testObject);
    
      cout << "testObject.a: " << testObject.a << "\n";
    }
    


  • Haha^^ Doch

    Es war einmal ein Programmierer, der hatte einen Auftrag. Da er faul war, wie alle Informatiker und Programmierer, dachte er sich in seinem Kopf: "Hach, da erleichtere wer die Arbeit mir in meinem Topf!" Zu jener Zeit war das Geschäftsmodell des Outsourcing sehr modern, so kam es, dass unser Programmierer in China angerufen und sich mehrere externe Programmierer angeheuert hat. Seine Aufgaben delegierte er von nun an brav weiter nach China und brauchte nie mehr einen Finger krumm machen. 😉

    Es wird weiterhin erzählt, dass dieser Programmierer so erfolgreich mit seinem Tun war, dass er sich noch weitere Jobs besorgte und diese auch nach China delegierte. Sein monatliches Einkommen wuchs und wuchs.
    Der Böse Kaiser (sein Chef) bekam nur irgendwann mit, dass extrem viele Zugriffe aus China auf das Firmen VPN vollzogen wurden, bis er durch Nachforschungen bei unserem Freund landete. Aber anstatt ihn zu einem Abteilungsleiter oder einer anderen Führungsposition zu befördern, hat er ihn gefeuert.

    Und die Moral von der G'schicht: Lern richtig programmieren, dann kriegste auch kein Arschtritt!

    Nachtrag: Wie wir alle wissen beginnen Märchen mit "Es war einmal...". Echtes Seemannsgarn fängt mit "Ey, jetzt mal ohne Scheiss..." an.


  • Mod

    daddy_felix schrieb:

    WhileTrueDo schrieb:

    meine frage ist aber wie ich dass beides includieren kan nicht wass ich für fehler mache

    das haben wir dir ja nun oft genug erklärt. Wenn du Parameterübergaben nicht als call-by-value machst, sondern als call-by-reference, benötigst du das include nicht, sondern kannst auf forward declarations zurückgreifen.

    daddy_felix schrieb:

    Dann versuch doch als erstes, ein Objekt als "call-by-reference" an eine Funktion zu übergeben.

    Ähh....

    Es ist zwar nicht unbedingt bester Stil, komplexe Objekttypen als Kopie zu übergeben, aber für eine Funktionsdeklaration reicht auch ein "incomplete type" vollkommen aus. Ich habe den Eindruck, dass ist dir selber nicht klar:

    class foo;
    
    class bar
    {
      void x(foo f);  // Absolut ok
    };
    
    void x(foo);  // Natürlich auch
    
    void y(foo) { }  // Geht nicht!
    

    Falls ich dir gerade unrecht tue und du das wusstest: Entschuldigung. Bei solch einem langen Thread ist schwer nachzuvollziehen, worauf alle Beteiligten überhaupt hinaus wollen.



  • Skym0sh0 schrieb:

    Echtes Seemannsgarn fängt mit "Ey, jetzt mal ohne Scheiss..." an.

    Ne mit "Arrr, damals als ich noch so alt war wie ..."
    Was du meinst sind Topstories von "Gangstern". HAHA



  • SeppJ schrieb:

    Es ist zwar nicht unbedingt bester Stil, komplexe Objekttypen als Kopie zu übergeben, aber für eine Funktionsdeklaration reicht auch ein "incomplete type" vollkommen aus. Ich habe den Eindruck, dass ist dir selber nicht klar:

    *ups* stimmt ja, hast recht.

    Trotzdem sollte WhileTrueDo die Gelegenheit nutzen, und sich damit beschäftigen. Ansonsten lautet der nächste Threadtitel "Geänderte Parameter werden nicht übernommen".



  • in meinem fall dann so?

    class Map
    { 
      public: 
        int Height; 
    } 
    
    void ChangeMember(Map Map1) // dies ist "call-by-value". Bitte ersetzen durch "call-by-reference" 
    { 
      Map1.Height = 20; 
    } 
    
    int main() 
    { 
      Map Map1: 
      Map1.Height = 10; 
    
      cout << "Map1.Height: " << Map1.Height << "\n"; 
    
      ChangeMember(Height); 
    
      cout << "Map1.Height: " << Map1.Height << "\n"; 
    }
    


  • Nein. Darum gings ihm nicht. Du hast jetzt nur 2-3 Namen geändert.

    Google mal call-by-value und call-by-reference.

    Und ich geb dirn nen Zehner wenn google nix ausspuckt.



  • Keine Ergebnisse für "call-by-value und call-by-reference und bitte bitte google spucke nix aus" gefunden



  • Tip:
    Bau in dein Code ein

    &
    

    ein.



  • Äh, moment, jetzt tut ihr WhileTrueDo Unrecht.
    Nach meiner Ansicht, hat er ein Beispiel gepostet, wie das in seinem Fall aussehen würde ohne das CallbyReference zu implementieren.



  • dankeschön



  • WhileTrueDo schrieb:

    in meinem fall dann so?

    class Map
    { 
      public: 
        int Height; 
    } 
      
    void ChangeMember(Map Map1) // dies ist "call-by-value". Bitte ersetzen durch "call-by-reference" 
    { 
      Map1.Height = 20; 
    } 
      
      
    int main() 
    { 
      Map Map1: 
      Map1.Height = 10; 
      
      cout << "Map1.Height: " << Map1.Height << "\n"; 
      
      ChangeMember(Height); 
      
      cout << "Map1.Height: " << Map1.Height << "\n"; 
    }
    

    Von mir aus auch mit diesen Bezeichnungen. Mir geht es eigentlich nur darum, dass du "call-by-reference" verstehst. Aber wenn du das gerne mit einer Klasse names "Map" üben möchtest, kein Problem.

    Also - hast du mal versucht, den Code so zu ändern, dass die Ausgabe stimmt? So, dass nicht zweimal "10" ausgegeben wird?

    edit: schön, dass du jetzt merklich Eigeninitiaitive zeigst 🙂



  • ich danke allen und vorallendingen dir für eure hilfe 😃 ud ich bin immernoch am lernen was cll-by-refferenzen angeht schonmal danke für den tip


Anmelden zum Antworten