Objekt in Objekt
-
Hallo,
habe folgendes Problem:
Ich habe 2 Klassen (a und b).
In Klasse b deklariere ich ein Objekt a (a a_obj)
und eine Methode. In der Klasse a gibt es auch eine Methode.
Nun rufe ich die Methode aus Klasse b auf. In dieser
Methode soll die Methode a_obj.method(b obj) aufgerufen werden.
D.h. also, ich will das Objekt übergeben.Der Quellcode:
class b { public: a obj_a; void b_method(); b(); virtual ~b(); }; class a { public: void a_method(b* obj); a(); virtual ~a(); }; void b::b_method() { obj_a.a_method(this); }
Warum bekomme ich einen Compiler-Fehler in der Klasse a ?
Wie kann ich ihn beheben ?
Wie kann ich mein Objekt b an die Methode übergeben ?Viele Dank
[ Dieser Beitrag wurde am 22.04.2003 um 10:21 Uhr von Haaf DeLuxe editiert. ]
-
Schau mal bitte ob Dir folgender Beitrag hilft:
http//www.c-plusplus.net/ubb/cgi-bin/ultimatebb.cgi?ubb=get_topic&f=15&t=008699
bzw hier genauer:
fehler bei querverweis #include".." von header datei
[ Dieser Beitrag wurde am 22.04.2003 um 10:28 Uhr von Knuddlbaer editiert. ]
-
Hi,
danke für die schnelle Antwort,
aber damit komme ich nicht zurecht.
Kann es mir jemand evtl. ganz einfach erklären ?Gruß und Danke
-
hi,
es ist nur eine frage der anordnung:
du benutzt in b eine instanz von a, a ist dem compiler zu dem zeitpunkt aber noch nicht bekannt.
in a benutzt du nur einen zeiger auf ein b objekt.
also gibst du einfach a vor b, und ganz vorne noch eine vorwärtsdeklaration für b, weil a ja einen zeiger auf b benutztclass b; //vorwärts class a { public: void a_method(b* obj); //hier kann man jetzt einen b* verwenden a(); virtual ~a(); }; class b { public: a obj_a; //hier kannst du jetzt ein objekt anlegen void b_method(); b(); virtual ~b(); }; //der rest ist egal void b::b_method() { obj_a.a_method(this); }
alternativ kannst du statt einer instanz von a in b in b einen zeiger auf a halten. dann musst du a vorwärtsdeklarieren.
-
btw: von den FAQs: #include