Variablenzugriff zwischen Klassen



  • Du könntest z.B. einen Pointer auf die Klasse machen

    CKlasse1* KL1;
    CString test = KL1->start;
    


  • @estartu_de: Ich befürchte das die beiden Klassen nix voneinander wissen. Ansonsten würde es gehen.

    Es würde auch funktionieren, wenn du in Klasse2 einen Zeiger auf Klasse1 hättest



  • Horst2 schrieb:

    @estartu_de: Ich befürchte das die beiden Klassen nix voneinander wissen. Ansonsten würde es gehen.

    Ich hatte deswegen vermutet, dass die Lösung geht:

    daniel12345 schrieb:

    aber ich weise ja die werte direkt in der ersten klasse zu (also ohne extra angelegte Instanz), und lege danach eine neue instanz an.
    ist es denn da irgendwie möglich, sämtliche werte zu übergeben?



  • naja, der zugriff funktioniert. die überlegung mit den pointer hatte ich schon probiert, nur entstand das problem,dass die variablen in dem fall einfach immer leer waren.
    hab ich denn eine möglichkeit, zb die adresse der instanz rauszufinden, wenn ich direkt in den memberfunktionen arbeite?



  • Deinen letzten Post versteh ich nicht ganz. Was willst du rausfinden? Was ging genn am Pointer nicht? Wenn du nen Zeiger drauf machst sollte er die Variablen in der Klasse nicht löschen...



  • wenn ich den pointer in klasse 2 anlegen wollte, gab es so eine zugriffsverletzung:

    // in Klasse2
    Klasse1* handle;
    

    und so waren die variablen alle leer:

    Klasse1* handle = new Klasse1;
    

    und andere möglicheiten kenn ich nicht.



  • Ist klar. Da beim new operator der Standardkonstruktor aufgerufen wird.

    was pulse meinte ist etwa so:

    Klasse1 first;
    
    Klasse1 *handle = &first;
    
    // Werte verändern, z.B. handle->nummer = 4711
    


  • daniel12345 schrieb:

    und andere möglicheiten kenn ich nicht.

    Du hast das grundsätzliche Problem immer noch nicht verstanden. Du kannst nicht aus einem Schrank herausholen, was du in einen anderen hineingelegt hast. Das Problem kannst du nicht lösen, indem du immer neue Schränke kaufst. Das ist aber bis jetzt deine Vorgehensweise.

    Du brauchst eine Referenz oder einen Zeiger auf genau die Instanz, in der du die Werte abgelegt hast. Wie das konkret geht, hängt vom Aufbau deines Programms ab.



  • eine lösung für MFK's beschreibung ist das du 2 globale Zeigervariablen anlegst:

    //global
    Klasse1 *pKlasse1;
    Klasse2 *pKlasse2;
    

    sobald du dann irgendwo mal eine Instanz einer Klasse erstellst gibst du die Adresse dieser Instanz auch gleich der dazugehörigen Variable, das machst du genau einmal!

    Klasse1 first;
    
    pKlasse1 = &first;
    

    jetzt kannst du in der anderen Klasse über first auf die Werte zugreifen. Allerdings müssen, damit das funktioniert, die Obigen 2 Schritte schon ausgeführt worden sein.

    //in Klasse2:
    VariableKlasse2 = first->VariableKlasse1;
    

    das machst du analog in der Klasse 1 wenn du dort die Werte der Klasse 2 haben willst.
    -> Allerdings hat das nicht viel mit MFC zu tun. Naja egal.

    Gruß Chris++



  • gut, vielen dank euch allen. werds dann mal so probieren


Anmelden zum Antworten