Zugriff auf Methode möglich ?
-
Hallo, wie greife auf die Methode ausgabe () zu ?.
class a { public: int mache_etwas (void) { //b::ausgabe(); // Zugriff WIE ? return 5; }; }; class b { class a neu; //eingebettetes Objekt public: void ausgabe (void) { printf("HALLO"); getch(); } };
-
Du brauchst eine Referenz oder nen Zeiger von B in A.
Warum brauchst Du das ?! Scheint ein wenig wir
-
Es hat sich zufällig ergeben! (könnte man sicher auch anders lösen -> schlechte Planung)
Aber jetzt will ich meinen Quellcode nicht mehr ändern, weil er schon etwas größer ist.Kann mir jemand deshalb beschreiben wie so eine Referenz funktioniert (&b) ?
Wie übergebe ich die Adresse bzw. die Referenz andere Klasse und wie greife ich dann darauf zu ?Kann jemand mal ein Beispiel machen ?
oder besser mein kleines Bespiel so ändern, dass es funktioniert !
Danke
-
Also wenn du für die Ausführung der ausgabe Methode kein Objekt von Typ B benötigst, dann kannst du sie ja statisch machen und so aufrufen wie du es wohl ursprünglich versucht hast.
class A { public: int mache_etwas (void) { B::ausgabe(); return 5; }; }; class B { class A neu; //eingebettetes Objekt public: static void ausgabe (void) { printf("HALLO"); getch(); } };
Ansonsten musst du wohl oder übel ein Objekt vom Typ B erzeugen und ausgabe darüber aufrufen.
class B { class A neu; //eingebettetes Objekt public: static void ausgabe (void) { printf("HALLO"); getch(); } }; class A { public: int mache_etwas (void) { B b; n.ausgabe(); //oder B *b = new B(); b->ausgabe(); return 5; }; };
Was ich aber für merkwuerdig halte wenn du einfach nur ein Objekt erzeugst, dessen Zustand nicht wichtig zu sein scheint, einfach nur um die Methode aufzurufen.
Gruß Entyl Sa
-
B *b = new B();
wenn ich mich nich irre, endet das 100% in nem speicherleck^^