Dialogfeld als Member der Dokumentenklasse



  • Hallo zusammen,

    ich habe folgendes Problem: Ich habe eine Dialogfeldklasse die im Konstruktor einen Pointer auf die Dokumentklasse meiner SDK-Anwendung übergeben bekommt, um auf die public-Member und Funktionen des Docs zurückzugreifen. Jetzt müsste ich den Dialog selbst als Member im Doc hinterlegen. Leider scheitert das, da ich das nicht initialisiert bekomme. Anscheinend gibts da eine Art Zirkelbezug beim includieren der Header. Hat jemand eine Idee wie man sowas prinzipiell lösen kann? Bin über jeden Hinweis dankbar....



  • Benutze in der Headerdatei nur eine Vorwärtsdeklaration:

    class Doc;
    
    class MyDialog
    {
    public:
        MyDialog(Doc *doc);
        // ...
    }
    

    Designtechnisch ist das aber meistens keine gute Idee, Funktionalität einer übergeordneten Instanz (Parent) aufzurufen.
    Besser wären dann Callbacks (events) o.ä.
    Und bei modalen Dialogen kannst du ganz darauf verzichten, indem du alle Werte übergibst bzw. nach dem Schließen des Dialogs die Werte abfragst und passend setzst.



  • Vielen Dank, das funktioniert. Ich passe ein Programm an und da ist schon vom Design viel vorgegeben. Der Dialog verbindet sich mit einer Datenbank und soll Statusmeldungen in Variablen des Docs schreiben. Klar, Events sind eine Möglichkeit. Der Dialog schlummert quasi im Doc und wenn zusätzliche Eingriffe notwendig werden wird er via DoModal hochgeholt. Wenn ich das nicht machen muss ich im Doc die Datenbank öffnen und im Dialog auch. Denke das das der Performance schadet. Aber danke für den Tipp.


Anmelden zum Antworten