Pointer einer Struktur
-
Hallo zusammen,
Ich habe mal eine kleine technische Frage, und zwar, wenn ich in einer Struktur einen Tabelle von einer anderern Struktur habe, und nun diese Tabelle eine genau Anzahl hinzufügen will, nehme ich dann new?
Als Beispiel:
struct test1 { float a, b, c, d; float pos[3]; }; stuct test2{ int time; test1 *props; }; test2.props = new test1[10]; <- ist das so möglich oder muss ich da anders vorgehenVielen Dank
-
Wenn du zur Laufzeit bereits weist, wie groß deine Anzahl ist und das für alle
anderen Instanzen dieser Struktur auch gilt, kannst du sie fest hinterlegen.struct test2 { int time; test1 props[10]; };Wenn du erst zur Laufzeit die Dinge variabel gestalten willst, dann musst du
den Speicher entsprechend mit new anfordern. Allerdings musst du vorher
eine Instanz von test2 erstellen, bevor du dies tun kannsttest2 foo; foo.props = new test1[10]; // und spaeter delete [] test1;
-
Also ich habs auch so wie du gemacht, test2 foo; und dann mit new den Speicherplatz reserviert doch, wenn ich nun aus einer Datei mit hilfe eines ifstream, was in mein foo.props[0].a speichern will, kommt aber nicht der richtige Wert an. Darum dachte ich das was bei der Deklaration falsch gegangen ist, denn davor wenn ich von der Datei in time speichere, bekomme ich den richtigen Wert.
-
struct test2 { int time; test1 *props; }; test2 x; x.time = 1; x.props = new float[10]; // *(x.props + 0) = 0; // *(x.props + 1) = 1; // *(x.props + n) = n; // *(x.props + 9) = 9; // AUfräumen nicht vergessen! delete[] x.props;Gruß
-
hallo chirsber,
also ich mache meine Datei auf,
[cpp]fin.open(filename, std::ios::in)[/cpp]kann ich dann nicht einfach die Proprities die in der Datei sin in meine Strucute speichern mithilfe von:
[cpp] fin >> x.props[0].a; [/cpp]also jetzt nur als beispiel wenn ich mithilfe von new wie du sagtest mir speicherplatz zu verfügung gestellt habe?
Gruss
-
ja kannst du.
test2 foo; foo.props = new test1[10]; cin >> foo.props[0].a; cout << foo.props[0].a; delete [] foo.props;im obrigen Beispiel habe ich zwar ohne Dateien gearbeitet, aber es kommt auf das
gleiche raus, nur das dein Stream eben aus einer Datei kommt.Kommt nun drauf an, wie deine Datei im ganzen aussieht und wie deine Dateioperation insegesamt aussieht.
-
Also ich lese eine Datei ein die wie Folgt aussieht:
0 10
1 1 0.1 0.15 ...in der Ersten Zeilen stehen time und total_numbers_of_particles und in der Zweiten Zeile id, type, a, b, etc,
nun lese ich als erste mit hilfe des ifstream time und particlenumbers ein und danach vill ich id, type und a, etc einlesen doch das klappt nicht, time und particlenumbers werden korrekt übermittelt aber dann klappt nix mehr