Forward Programming



  • Hallo zusammen,

    //foo.h
    #include "bar.h"
    
    class Foo{
        Bar a;
    };
    
    //bar.h
    class Foo;
    
    class Bar{
        Foo &a
    };
    
    //foo.cc
    #include "foo.h"
    
    //bar.cc
    

    muss in diesem Beispiel jeweils die Konstuktoren nochmal aufrufen? Ansonsten würde doch ein Segmentation fault kommen? oder wie macht man dies geschickter?

    Danke und Grüße



  • Ich hab keine Ahnung von was du redest 😕



  • Bin grad selbst etwas verwirrt 🙂
    Nochmals:

    //foo.h
    #include "bar.h"
    
    class Foo{
        Bar *a;
    };
    
    //bar.h
    class Foo;
    
    class Bar{
        Foo *a
    };
    
    //foo.cc
    #include "foo.h"
    
    //bar.cc
    

    Woher wissen beide Klassen auf welchen Speicherbereich sie zeigen müssen? Ich muss das doch irgendwie mitteilen oder?


  • Mod

    Woher wissen beide Klassen auf welchen Speicherbereich sie zeigen müssen?

    Gar nicht. Wenn es ihnen niemand sagt, ist der Pointer erst einmal uninitialisiert. Wobei das komisch formuliert ist, denn eine Klasse weiß sowieso gar nichts, du meinst wohl Objektinstanzen dieser Klassen. Nehme ich zumindest mal an, sonst macht die Frage keinen Sinn.

    Ich muss das doch irgendwie mitteilen oder?

    Das kommt drauf an, was du machen möchtest.

    Du merkst, die Antwort war nicht hilfreich. Das liegt da dran, dass die Frage immer noch unklar ist.



  • Ich möchte, dass Foo Funktionen von a aufrufen kann und Bar Funktionen von Foo!
    von Foo nach Bar tritt noch kein Segmentation fault auf, aber wenn ich versuche von Bar Foo Funktionen aufzurufen komme ein Speicherzugriff-Fehler.Ergo kennt Bar Foo nicht aber Foo Bar.

    Wie kann ich jetzt Bar mitteilen, dass dieser Foo der gleiche ist von vorhin?

    Sorry falls ich mich etwas unverständlich Ausdrücke



  • Ich bin mir auch nicht sicher was dein Problem genau ist, aber üblicherweise hilft den Leuten der Link hier.



  • Beobachter01 schrieb:

    Ich möchte, dass Foo Funktionen von a aufrufen kann und Bar Funktionen von Foo!

    auf welchen Objekten denn? Irgendwo muss es doch dann auch mindestens ein Foo-Objekt geben und mindestens ein Bar-Objekt. Wo gibt's die?



  • Wie hier schon richtig bemerkt wurde, hast du nirgends auch nur ein Objekt der Klasse erstellt. A *a; <- Das ist ein Pointer. A &a; <- Das ist eine Referenz. Beide können auf ein Objekt zeigen, sind selbst aber keine Objekte. A a; <- So erstellt man ein Objekt.


Anmelden zum Antworten