Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 |
class_beispiel unit( framework ); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
struct test
{
class_beispiel unit;
}
test unit_data;
|
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Shorkan« (17.10.2014, 14:41)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (16.10.2014, 20:36)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
class test_class { private: public: void test; }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
void test_class::test() { struct data { int a; int b; }; std::vector< data > werte; data temp; temp.a = 12; temp.b = 5; // jetzt stimmen die werte im temp; werte.push_back( temp ); werte[0].a; <-- würde jetzt einen Fehler produzieren } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> #include <vector> void test() { struct data { int a; int b; }; std::vector< data > werte; data temp; temp.a = 12; temp.b = 5; werte.push_back( temp ); std::cout << ":" << werte[0].a; } int main() { test(); return 0; } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Der Grund ist der, dass beim push_back eine Kopie des Structs in den Vektor gepackt wird und keine Referenz. Daher kannst Du die Werte nicht einfach nachträglich ändern. Dafür müsstest Du Dir nach dem push erst eine Referenz auf das Element aus dem Vector geben lassen. Der Compiler macht da durchaus alles richtig, aber Du nichtWas mich jetzt interessiert, warum sollte man die Daten des Structs, sobald es im Vector ist nicht mehr ändern? Warum sollte das falsche Werte produzieren, wenn man es bewusst macht? Würd ich gern verstehen. Bauen das manche Compiler nicht richtig um beim Code erstellen oder was ist der Grund dafür?
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlueCobold« (17.10.2014, 07:16)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige