Auf Variabel von andrerer Klasse zugreifen



  • Hallo zusammen!
    Ich habe eine Frage. Zur Zeit programmiere ich ein Tool mit MFC.
    Ich habe ziemlich viele Klassen mit Methoden und Attributen.
    Ich versuche es möglichst einfach und verständlich ausdrücken.
    Ich habe eine Klasse A eine Klasse B und eine Klasse C.
    Nun macht die Klasse A irgend etwas und speichert das resultat in eine Membervariabel der Klasse A.
    Die Klasse B macht ebenfalls etwas und speichert das Resultat in eine Membervariabel der Klasse B.
    Nun möchte ich von der Klasse C aus die beiden Membervarialeln weiterverarbeiten.
    Ich habe es mit Pointer versucht

    ASSERT(NULL != m_pMessung);
      m_pMessung->messen();
    

    Mit obenstehendem Code "linke" ich sozusagen auf die andere Klasse...
    Nun funktioniert das aber irgend wie nicht 😞
    Könnte mir irgend jemand bitte ein Kleine Beispiel geben, wie ich auf die Beiden Varabeln möglichst einfach und sauber zugreifen kann? Da wäre ich euch sehr dankbar!
    Ich verwende XP und habe Visual Studio6.0 C++ mit MFC
    Gruss Skipper



  • Du brauchst irgendwo eine Variable deiner beteiligten Klassen, sonst geht das schonmal gar nicht. Und wenn du diese hast, kannst du auch über -> bzw. . auf deren (public*) Member zugreifen.

    B theB;
    
    A::doSomething()
    {
      theB.messen();
      ...
    }
    

    * private und protected Member sind von außen nicht zugänglich, außer du hast die Anwender-Klasse als friend eingetragen.



  • #include "CA.h" // class a
    
    CB::CB(.........) // class b
    {
      int messen;  // Variable der class b
      CA  test;    // verknüpfung zur class a
    
      messen = test.m_Variable; // variable der class a an variable der class b übergeben.
    }
    


  • Danke für die Beiträge!
    Aber irgend wie macht es mich mein Problem noch nicht glücklich:-)
    Sollte muss eben Pointer verwenden, da die Variablen privat sind...
    ich habe das nun mit Pointer nochmals versucht...Nun kommt aber eine Meldung "Unhandled exception in Programm.exe (MFC42UD.DLL); 0x0000005: Access Violation"
    Ich weiss nur nicht, wo ich den Zugriff verletze...:-)
    Hat das mit den Pointer einer im Griff?
    Danke nochmals!



  • Das Objekt "C" muss ja irgendwie auf die Objekte A und B zugreifen können, um deren membervariablen auswerten zu können. Sind diese privat braucht man halt eine Methode die public ist. irgendwie ist mir noch nicht klar, wo dein verständnisproblem ist. poste mal quellcode, damit man sieht in welche richtung deine gedanken gehen.

    smeagol



  • ich werde das problem nochmals genau studieren. Wenn es noch unklarheiten geben wird, werde ich mir dir mühe machen, den quellcode zu posten. Es ist eben bereits ziemlich viel und ich müsste den Code ziemlich "abspecken" damit ich ihn posten könnte...aber ich werde nochmals an das problem ran gehen... Danke nochmals...
    Gruss und vielleicht bis später 😉


Anmelden zum Antworten