Klassenproblem
-
hallo,
ich habe zwei Klassen, die eine hat Funktionen, die andere ruft die Funktionen aber von der ersten auf:
// classA.h #include "classB.h" class A { public: // Was hier reinschreiben, damit Zugriff auf die Funktion sayany(std::string) besteht? }; // classB.h #include "classA.h" class B { public: friend class A; void sayany(std::string haha) { std::cout << haha << std::endl; } // .. };Mfg

-
class A{ B &objB; public: //Konstruktor A(B &obj) : objB(obj){ } void dummy()/ objB.sayany("haha"); } // Was hier reinschreiben, damit Zugriff auf die Funktion sayany(std::string) besteht? }; // classB.h #include "classA.h" class B{ public: //friend class A; void sayany(std::string haha) { std::cout << haha << std::endl; } // .. };Aber was hast du eigentlich vor?
-
hallo,
kann mir bitte jemand schnell helfen?

-
Wobei?
-
Reicht dir der Beitrag von Boris nicht aus? Die Klasse A benötigt ein Objekt vom Typ B, um darüber auf die B-Methoden zugreifen zu können (außer bei statischen Methoden - da würde "B::sayany("guten Morgen");" ausreichen). Und friend-Zugriff benötigt die Klasse dafür nicht, schließlich ist die benötigte Methode public

PS: Wenn sich zwei Header gegenseitig einbinden, kann das katastrophale Folgen haben (sprich: Compilerfehler wie undefinierte Variablen oder (bei vergessenen Include-Guards) zu viele verschachtelte Includes). Da mußt du dann mit Forward-Deklarationen arbeiten.