Kann man nicht per Propperty auf Strukturen zugreifen?



  • Hi,
    folgendes Problem. Ich habe eine Klasse, in der ich über ein Property auf die Daten zugreifen möchte. Beim beenden des Programms gibt es eine Eception.
    Die Daten liegen in einer Struktur. Eine Property soll auf dieses Strukturelement zugreifen. Zu Debugzwecken ist die Struktur hier public. Soll später private sein. Wenn ich nun im Code die Zeile (1) ausführe, kann man sehen, das der Wert der Struktur sich nicht verändert. Also das Property und die Struktur haben unterschiedliche Werte!! Nehme ich intern eine einfache Variable, dann geht es. Wo liegt das Problem? Hoffe ich konnte es einigermaßen verständlich beschreiben....

    // ... enums
       typedef enum{     GS3_20pol= 1,
                         GS3_18pol= 2               } TYPEOFGS3;
    
       // ... Strukturen
    	typedef struct{   TYPEOFGS3      eTypeOfGS3;
                                                    }  GS3TESTDATA;
    
    class WGS3Data {
    ....
    public:
       __property     TYPEOFGS3      TypeOfGS3   = { read = _GS3TestData.eTypeOfGS3 , write = _GS3TestData.eTypeOfGS3 };
    
       GS3TESTDATA    _GS3TestData;
    };
    

    Code:

    // Zeile (1) Zugriff über Property
    pGS3Data->TypeOfGS3= GS3_20pol;
    
    // Zeile (2) Zugriff direkt auf Struktur
    pGS3Data->_GS3TestData.eTypeOfGS3= GS3_20pol;
    


  • Hallo

    Wenn ich nun im Code die Zeile (1) ausführe, kann man sehen, das der Wert der Struktur sich nicht verändert. Also das Property und die Struktur haben unterschiedliche Werte!!

    Kann ich nicht nachvollziehen. Ich habe genau deinen Code kopiert und ausprobiert, Eigenschaft und Struct ändern sich im Debugger (BCB5) wie erwartet.
    Du solltest vielleicht noch eine explizite Setter-Methode einbauen, aber ändern sollte sich dadurch nichts.

    bis bald
    akari



  • Danke für die Hilfe. Das Problem hatte ein Kollege. Ich habe es jetzt mal auf meinem PC nachvollzogen und bei mir läuft es auch. Echt mysteriös.....also grundsätzlich geht es. Dann werden wir mal seinen PC untersuchen..... Danke nochmal


Anmelden zum Antworten