struct Array



  • Hallo,

    habe folgende Struktur:

    struct TCondition {
      bool IsX[1];
      double Number[1];
      int Arrow;
      bool Equal;
    } Condition_Type;
    
    TCondition Condition[1];
    

    Und damit lässt sich überhaupt nicht arbeiten, wird eine Variable geändert, verändert sich automatisch irgendeine zweite.

    Wird z. B. Condition[0].Arrow=1; gesetzt, ändert sich auch Condition[0].Number[1] und zwar auf "4.9406564584125e-324" - Versuche mit Condition[0].Arrow=int(1); bringen genauso wenig wie beides mit __int8 (d.h. sowohl typecasten und mit __int8 deklarieren)

    Umgekehrt ändern sich auch Arrow, wenn Number geändert wird (obwohl Number garantiert ein Double Datentyp zugewiesen wird).

    Kann es sein, das solche "Doppel-Array" Konstrukte (also in der Struktur ist ein Array und Strukturvariable selbst wieder ein Array) in C++ generell nicht zulässig sind?

    Aber warum, und wie behilft man sich dann?

    Arbeite mit Visual C++ 6.0

    Vielen Dank und viele Grüße,
    Patrick



  • Dein Array Number hat nur ein Element, du verweist aber aufs Zweite (Number[1] != Number[0]). Du greifst also auf Speicher zu, der für die nächste Variable (Arrow) gedacht ist. BTW: Weil der Speicher wegen den unterschiedlichen Typen auch unterschiedlich interpretiert wird, kommt da so ne krumme Zahl raus.



  • oups, ja richtig, vielen Dank!

    Steg gerade von Visual Basic auf C++ um und portiere ein erstes etwas größeres Programm nach C++ und tu mich doch ganz schön schwer damit...

    Nachdem bei VB "dim a(1)" ein Array von 0 bis 1 deklariert, war ich jetzt irgendwie felsenfest davon überzeugt, das müsste so in C++ auch gehen, und hab den Fehler überall gesucht, nur nicht da...

    Also thx und cool das es solche Foren gibt 🙂

    Patrick



  • Beim Umsteigen auf C++ hat mir das geholfen: D. May; Grundkurs Software-Enwicklung mit C++; Schau mal bei Amazon.

    Viel Spass

    Jerry 🙂


Anmelden zum Antworten