C++:
struct struct_M
{
struct struct_A
{
double* p1;
double* p2;
double v1;
double v2;
};
std::vector<struct_A> vec_A;
std::vector<double> vec_d;
};
struct_M M;
std::vector<double> vec_X;
struct_M copyOf_M = M;
Hallo, ich habe mal eine Frage zu vorigem Code.
Zur Erklärung:
- Es gibt ein vector aus structs vec_A
- Es gibt ein vector aus doubles vec_d
- Es gibt ein vector aus doubles vec_X
- Im Laufe des Programms können die Pointer aus struct_A im vector vec_A je nach Laufzeit völlig unterschiedlich auf Values von folgende Variablen verweisen:
- auf Variablen von vec_d (gehört im selben struct_M immer zum vec_A)
- auf Variablen von vec_X (gibt es immer nur 1x)
Eine Instanz von struct_M enthält immer vec_A und vec_d wo manche pointer von vec_A immer auf Variablen von vec_d zeigen.
Meine eigentlichen Frage ist jetzt wie kann ich diese Zusammengehörigkeit kopieren?
Denn es ist ja so, wenn ich M kopiere zu copyOf_M dann sind zwar die Pointer auf vec_X korrekt (weil das für alle am selben Ort nur 1x existiert) aber die Pointer auf vec_d sind falsch und zeigen auf vec_d von M statt auf vec_d von copyOf_M was natürlich logisch ist.
Um den Bezug vec_A und vec_d zu erhalten könnte man als Verweis im struct_A statt einen Pointer als integer den Index des vectors vec_d speichern so wäre struct_M kopierbar, aber das funktioniert leider NICHT weil eben auch Verweise nach Außen auf vec_X möglich sein müssen.
Die Frage ist also verkürzt, wie kann man eine Datenstruktur (struct_M) mit erst zur Laufzeit bekannten Verweisen gestalten, dessen Instanz kopierbar ist und dabei die inneren Verweise erhält (vec_A -> vec_d) und aber auch auf weitere äußere Variablen (vec_X) verweisen kann?
Gruß
Zuletzt bearbeitet: