UpdateData von aufrufender Klasse



  • Hi,

    ich habe eine eigene Klasse geschrieben. Diese soll jetzt Daten in
    der aufrufenden Klasse ändern, also ein CEdit befüllen. Das klappt
    eigentlich auch ganz gut. im Konstruktor der neuen Klasse lasse ich einen Zeiger
    auf CDialog übergeben. Wenn ich den Zeiger dann zu meiner aufrufenden Dialogklasse caste, dann kann ich auf alle Objekte zugreifen, also auch
    UpdateData ausführen.

    Allerdings muss ich dafür die aufzurufende Klasse jedesmal "von Hand" ändern,
    also den cast. Kann ich es auch hinbekommen (mit übergabe eines Zeigers) direkt
    auf die Methoden der aufrufenden Klasse zuzugreifen, also egal von wo? Ich würd gern die ID des CEdit übergeben das geändert werden soll.

    also:

    CMyClass test(this);
    test.update();
    

    update soll dabei aber zum Beispiel das UpdateData der aufrufenden Klasse ausführen.

    Hat das nun wer verstanden? und geht das? 🙂

    thx schonmal..

    tobi



  • Mach doch eine vituelle Funktion. Da wird immer die passende aufgerufen.

    Du brauchst:
    Eine Basisklasse mit der Funktion, abgeleitet von CDialog.

    Dann leitest du deine Dialogklassen von der statt CDialog ab und baust die Funktion ein.

    Fertig! 🙂

    Verstanden?



  • Wow, das ging ja schnell 😉

    hmm wär eine Idee. Nur dann müsste ich ja die Virtuelle Klasse
    überall mit "zwischenschalten". Da hier aber schon ein komplettes
    Framework besteht und mein Dialog nur als DLL zur Laufzeit hinzugelinkt wird
    ist das schlecht machbar.
    Es geht darum das ich mit CAsyncSocket arbeite und halt möglichst einfach
    für jeden anderen die Funktionalität meiner Klasse zur Verfügung stellen möchte (ist nen rudimentärer Telnet-Client).

    daher wär es mit ner virtuellen Klasse ziemlich umständlich einzubauen, glaub ich. Andererseits könnte ich mich damit dann mal beschäftigen *g*.

    gibt es noch ne andere Möglichkeit? Aber ich versuch mich erstmal bischen mit virtuellen Methoden in der praxis (hab ich bisher immer nur gelesen 🙂 )

    mfg
    tobi



  • Hmm,

    also ich habe daran nochmaln bischen rumgefummelt 🙂

    momentan hab ich jetzt erst bei der Übergabe einen upcast auf CDialog und dann in der aufgerufenen Klasse wieder einen Downcast auf die aufrufende Klasse. Dynamisch geht das ganz jetzt aber immer noch nicht. Da die aufgerufene Klasse die aufrufende ja nicht kennt (ohne das Headerfile einzubinden). Ich hatte jetzt den Klassennamen noch mit übergeben. Aber ohne Header-Files bringt mir das ja auch nix 😞

    impossible? 🙄


Anmelden zum Antworten