Vector in Vector inkl. Konstruktor mit Vector"befüllung"
-
SeppJ schrieb:
thuering schrieb:
Und wo muss das genau bekannt gegeben werden?
Na, da wo du den Testvector2 benutzen willst. Es gibt sehr viele Testvector2 in deinem Programm, du musst daher schon sagen, welchen. Tipp: Vermutlich willst du
i->Testvector2.begin(). Es ist aber wichtig, dass du verstehst, warum das so geht.Ich verstehe natürlich, dass das alles sehr viel mit selber verstehen und selber ausprobieren zu tun hat. In diesem speziellen Fall würde ich aber wohl selber verstehen, wenn mir eine syntaktisch korrekte Lösung vorliegt.
Das Programm soll am Ende einfach nur die 3 Werte, welche in Testvector2 liegen, ausgeben. Ausgabe also:
12 34 56Da bin ich doch nur 1 Zeile entfernt von, oder?
Edit: Oder auch 2 Zeilen.
-
thuering schrieb:
SeppJ schrieb:
thuering schrieb:
Und wo muss das genau bekannt gegeben werden?
Na, da wo du den Testvector2 benutzen willst. Es gibt sehr viele Testvector2 in deinem Programm, du musst daher schon sagen, welchen. Tipp: Vermutlich willst du
i->Testvector2.begin(). Es ist aber wichtig, dass du verstehst, warum das so geht.Ich verstehe natürlich, dass das alles sehr viel mit selber verstehen und selber ausprobieren zu tun hat. In diesem speziellen Fall würde ich aber wohl selber verstehen, wenn mir eine syntaktisch korrekte Lösung vorliegt.
Hat mein Vorschlag denn nicht funktioniert?
Das Programm soll am Ende einfach nur die 3 Werte, welche in Testvector2 liegen, ausgeben.
Das ist es doch gerade: Du hast keinen einen Testvector2 (beziehungsweise du hast schon nur einen, aber das kann der Compiler nicht wissen). Du hast einen vector von testklassen. Und Jede testklasse in diesem vector hat ihren Testvector2. Wenn du einen Testvector2 benutzen möchstest, dann musst du sagen, von welcher Instanz der testklasse der Testvector2 sein soll.
-
Ich habs nun verstanden, ich hatte wohl Würmer im Hirn. Der Code läuft und ich habe den Zugriff / das Warum verstanden. Ich Danke Dir für Deine Geduld!

-
Damit ich nicht noch einen extra Thread aufmache, stelle ich einfach hier, (in der Hoffnung es wird beantwortet) eine Frage:
Wieviele Argumente sind maximal erlaubt, wenn ich eine Funktion oder einen Konstruktor aufrufe? 256? 1024? 65536? ....?
-
Technisch kannst/mußt du so viele Parameter angeben, wie bei der Funktionsdefinition gefordert wurden. Praktisch erinnere ich mich düster an eine Grenze, die im Standard definiert wurde (auf Anhieb finde ich allerdings nur eine womöglich veraltete Angabe für C - der Compiler muß mindestens 31 Parameter unterstützen).
-
Klar dass die Parameter auch definiert sein müssen.
Oh Gott - 31 - dann hoffe ich, dass diese Angabe wirklich veraltet ist. Ich bin jetzt schon bei 16, aber meine "Enemy"-Klasse wird noch um das 5fache wachsen...
Edit: Oder das gcc und/oder MSVC sich nicht nur an den Mindeststandard halten.
-
Also wenn du 16, oder sogar mehr, Argumente übergeben musst, behaupte ich mal, dass du etwas falsch machst.
-
thuering schrieb:
Ich bin jetzt schon bei 16, aber meine "Enemy"-Klasse wird noch um das 5fache wachsen...

Da ist es wohl an der Zeit, ein wenig Ordnung in die Klasse reinzubekommen. Selbst wenn du damit nicht an irgendwelche Compiler-Limits kommen würdest, ist sowas einfach nur noch unübersichtlich und nicht mehr sinnvoll einsetzbar.
-
OK, ganz praktisch aufgetischt: Gerne würde ich mit einem einfachen Konstruktoraufruf einen "Gegner" in einem kleinen (aber regelüberladenen! (und das soll auch so)) textbasierten Rollenspiel erschaffen. Da müssen Name, Rasse, Klasse, Stufe, Erfahrung, Hitpoints, Trefferchancen, Schaden, Rüstung, Resistenzen, Waffenfertigkeiten, Spezielle Fähigkeiten, Inventar, Mut, Zauber und vieles vieles mehr festgelegt werden.
Aber, wenn ihr schon so kommt, gibt es sicherlich eine gute Lösung.
Mir würde spontan einfallen, die komplette Gegnergenerierung in den Konstruktor selbst zu schreiben und nicht von extern (über eine seperate Funktion) die Konstruktorargumente zu setzen. Gute Idee?
-
Gemeinsame Eigenschaften zu neuen Klassen (oder auch nur Strukturen mit
public-Attributen) zusammenfassen. Zum Beispiel für Offensive, Defensive, Zauber, ...
-
So viele Daten lassen sich wohl kaum sinnvoll hardcoden, benutz dazu doch besser eine Xml-Datei oder eine Datenbank.
-
Ethon schrieb:
So viele Daten lassen sich wohl kaum sinnvoll hardcoden, benutz dazu doch besser eine Xml-Datei oder eine Datenbank.
Mache ich bereits. Zwar weder XML noch Datenbank, aber die Werte, die an den Konstruktor übergeben werden, kommen aus externen Dateien (Textdateien). Wenn ich mit meinem Programmierkenntnissen weiter komme, würde ich den ganzen Kram dann in eine SQL Datenbank packen, vorzugsweise PostgreSQL.