Problem Zeiger auf Struktur übergeben



  • Hallo zusammen,

    folgendes Problem: Habe eine dialogbasierende Anwendung,
    von der ich einen 2.Dialog öffne. Die Daten aus einer anderen Klasse werden
    werden dem 2.Dialog einzeln als Funtionsparameter übergeben. Das funktioniert einwandfrei.
    Da die Parameteranzahl mittlerweile ziemlich groß ist, wollte ich diese in einer Struktur zusammenfassen
    und einen Zeiger auf diese übergeben.
    Das funktioniert nicht, denn irgendwie kennt der 2.Dialog diese Struktur nicht, obwohl ich die "parameter.h" eingebunden habe. Unten (nur sinnbildlich!) der Code.
    Wo steckt der Fehler bzw. was muß ich anders machen?

    Danke im Voraus

    So funktioniert es.

    //------hauptdialog.cpp------
    Hauptdialog::Fkt()
    {
     CParameter par;  //Objekt der Klasse aus der die Parameter geholt werden
     CDialog2 dlg2;   //Objekt der Klasse für 2.Dialog
     dlg2.ImportFkt(par.value1, par.value2);
    }
    
    //--------dialog2.cpp----------
    CDialog2::ImportFkt(int value1, int value2)
    {
    }
    

    Mit der Struktur funktioniert es nicht...

    //-------hauptdialog.cpp------
    Hauptdialog::Fkt()
    {
     CParameter par;  //Objekt der Klasse aus der die Parameter geholt werden
     CDialog2 dlg2;   //Objekt der Klasse für 2.Dialog
     dlg2.ImportFkt(par.data);
    }
    
    //--------dialog2.cpp----------
    CDialog2::ImportFkt(DATA *data)
    {
    }
    
    //--------parameter.h----------
    struct DATA
    {
     int value1;
     int value2;
    };
    DATA *data;
    


  • übergib doch einfach einen pointer auf deinen hauptdialog das sollte einfacher sein... eventuell brauchst du den nicht mal zu übergeben und ein einfaches AfxGetMainWnd tuts schon



  • Hallo,

    habe das leider nicht hinbekommen. Wäre jemand so nett und würde etwas Code posten?
    Vielleicht erkläre ich zum besseren Verständnis das Problem etwas anders:

    Wie übergebe ich aus einer Dialoganwendung (Klasse A) einem zweiten Dialog (Klasse 😎 einen Zeiger auf eine Struktur, welche in einer dritten Klasse definiert ist? Problem: Der zweite Dialog kennt trotz Include von KlasseC.h die Struktur/Datentyp nicht.

    Das ist doch sicher eine Kleinigkeit für die erfahrenen Programmierer.

    Danke im Voraus!



  • Servus,

    dir würde ich auch raten dir einfach den Zeiger von deinem Haupdialog zu nehmen aber es geht auch so:

    Bsp.:
    Parameter.h

    balbla
    public:
       struct DATA
       {
          CString strKatzenklo;
       }
    

    Dlg2.h

    #include "Parameter.h"
    
    public:
        void DeineFunkt(CParameter::DATA *data);
    

    Dlg2.cpp

    void Dlg2::DeineFunkt(CParameter::DATA *data);
    {
       SchissisimKlo();
    }
    

    Dlg1.cpp

    #include "Parameter.h"
    
    void Dlg1::MAchWas()
    {
       CParemter::DATA test;
       test.strKatzenklo = "Ne Menge Schiss!!";
    
       Dlg2 test2;
       test2.DeineFunkt(&test);
    }
    

    Meinst du sowas???
    So Fehler bitte korrigieren, ich bin ziemlich müde. Daher sind Fehler nicht ausgeschlossen *g* 😃

    *winke*
    Hellsgore



  • Hallo Hellsgore,

    Danke für Deine Hilfe!
    Das entscheidende war das vorangestellte "CParameter::" innerhalb der Fkt.-Klammer.
    Dieses Konstrukt kannte ich noch nicht. Aber wie ich schon sagte,
    für erfahrene C++-Programmierer sicher total banal.
    Katzenklo- haha, welch kultiges Beispiel 😃

    MFG
    GastA


Anmelden zum Antworten