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.


Anmelden zum Antworten