Mehrere Mitspieler?
-
hallo allerseits,
ich möchte gerne mehrere mitspieler einfügen, ohne vorher zu wissen wie viele es sein werden.
in der methode run() wird zuerst nach einem namen gefragt. nach eingabe wird ein objekt von Auto erstellt indem der name gespeichert wird.
jetzt würde ich gerne einen weiteren mitspieler hinzufügen. also einfach run() wieder von neuem ausführen. wenn ich jetzt den name eingebe wird der name des alten objektes natürlich überschrieben.
wie schaffe ich es, das bei mehrmaligem aufruf von run() immer wieder ein neues objekt erzeugt wird, und wie spreche ich die einzelnen objekte dann später an?ich hatte irgendwie an ein objekt-array gedacht, aber wusste nicht genau wie das geht, und ob das überhaupt der richtige ansatz ist.
man könnte dann ja am ende von run() ein ++i schreiben um beim nächsten start das nächste objekt anzusprechen.ich hoffe ihr wisst was ich meine und danke schonmal
-
Wieso nennst du deine Spieler denn Auto?
#include <vector> struct Auto{ std::string name; ... }; Auto run(); int main(){ std::vector<Auto> Spieler; //das ist das was du suchst, ein Ding was Autos speichert Spieler.push_back(run()); Spieler.push_back(run()); //beliebig oft, in einer Schleife oder so Spieler[0]; //der erste Spieler Spieler[1]; //der zweite Spieler //alle Spieler durchgehen: for (unsigned int i = 0; i < Spieler.size(); i++){ //funktioniert, soll man aber nicht machen cout << Spieler[i].name; } for (vector<Auto>::const_iterator cit = Spieler.cbegin(); cit != Spieler.cend(); ++cit){ //so soll man es machen, ist aber etwas umständlich cout << cit->name; } //etwas einfacher wenn dein Compiler das kann: for (auto cit = Spieler.cbegin(); cit != Spieler.cend(); ++cit){ //auto hat nichts mit Auto zu tun cout << cit->name; } }
-
Noch einfacher ist:
for (auto a : Spieler) cout << a.name << '\n';
-
Nathan schrieb:
Noch einfacher ist:
for (auto a : Spieler) cout << a.name << '\n';Wieso nicht
auto&?
-
Nathan schrieb:
Noch
einfacherlangsamer ist: auto aNimm besser
auto const&oderstd::copy(Spieler.begin(), Spieler.end(), std::ostream_iterator<Spieler>(std::cout, "\n"));