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