Zugriff auf Variable der Besitzerklasse



  • hi

    Hab folgendes Problem.
    Wie kann ich in einer Methoden-Definition einer Klasse B eine Variable nutzen, die Instanzvariable einer Klasse A ist, die ein Objekt der Klasse B hat?

    class A{
    int variable;
    B b;
    };
    
    class B{
    void funktion();
    };
    
    void B::funktion(){
    printf("%d",variable);  //Compiler meckert, da er variable nicht kennnt
    }
    


  • Edit: Sry Müll



  • Mach halt nen Konstruktor und übergeb die Variable

    class A{
    public:
    int variable;
    B b (variable);
    };
    
    class B{
    public:
    int variable;
    B(int);
    void funktion();
    };
    
    void B::funktion(){
    printf("%d",variable);  //Compiler meckert, da er variable nicht kennnt
    }
    
    B::B (int avariable)
    {
    variable = avariable
    }
    

    !Achtung!: Nicht getestet



  • hi

    vielleicht so:

    class A
    {
       A(void) : B(variable) { } 
       int variable;
       B b;
    };
    
    class B
    {
       B(int t_variable &t) : variable(t_variable) { }
       void funktion();
       int &variable;
    };
    
    void B::funktion(){
    printf("%d",variable);  //Compiler meckert, da er variable nicht kennnt
    }
    

    waere jetzt so spontan die einzige moeglichkeit die mir einfallen wuerde

    Meep Meep



  • opengl_noob schrieb:

    ....
    Wie kann ich in einer Methoden-Definition einer Klasse B eine Variable nutzen, die Instanzvariable einer Klasse A ist, die ein Objekt der Klasse B hat?...

    In der Allgemeinheit: Gar nicht !

    Beschreib doch mal, was die beiden Klassen fachlich miteinander zu tun haben ? In Deinem Beispiel sind es zwei vollkommen unabhängige Klassen, bei denen erstmal nicht einsichtig ist, warum die eine auf ein Attribut der Anderen zugreifen können sollte (ebensowenig, wie ein Objekt der Klasse "Fahrrad" auf "Türklinke" von Haus zugreifen können sollte 😉 ).

    Anders ausgedrückt: Wenn zwei Klassen etwas miteinander zu tun haben sollen, musst Du den Zusammenhang programmieren.

    Gruß,

    Simon2.


Anmelden zum Antworten