Vererbung Parameter Vektor
-
Hallo,
ich habe eine Oberklasse Waffe und Unterklassen die Spezialisierungen von Waffen darstellen. Nun gibt es eine Klasse Spieler, welcher einen Vektor, der Waffen hält, hat.
Dieser Vektor kann 2 verschiedene, bestimmte Spezialformen von Waffe halten.
z.B. sei es "Kanone" und "Pistole".Ich habe einen setter, welcher die Waffen hinzufügen soll. Was setze ich las Parameter? Kann ich nicht einfach die Oberklasse "Waffe" als Parameter setzen, aber "Kanone" und "Pistole" übergeben.
Wie mache ich es am besten? Soll ich 2 verschiedene setter erstellen, was ich eigentlich vermeiden wollte. Es soll mit einem Setter gemacht sein.
Außerdem will ich einen Vektor "waffen" haben, dieser soll auch 2 verschiedene Typen aufnehmen könne, sprich Kanone und Pistole.
Ist es dann : vector<Waffe> waffen; _??
-
Du machst am Besten einen vector<unique_ptr<Waffe>> oder irgendeinem anderen Waffenpointer, z.B. vector<Waffe*>, wenn die Ownerfrage anderso behandelt wird. Virtueller Kram geht nur mit Referenz- oder Pointertypen.
-
Hi,
ich weiss nicht ob ich das ueber Vererbung loesen wuerde.Haben denn deine Waffen komplett unterschiedliche Funktionen?
Falls nicht waere die herangehensweise eine Klasse "Waffe" zu haben und die unterschiedlichen Waffen unterscheiden sich dann einfach nach Parameter(enum fuer Waffentyp, Schadenswerte, Reichweite, Zielgenauigkeit, Audio-Sound, Grafik etc.).
Du koenntest dann einfach eine Factory Funktion bauen die Dir je nach ENUM (Waffentyp) eine fertig konfigurierte Klasse ("Waffe) zurueckgibt dann kannst Du dir das ganze Vererben sparen.
Edit: ansonsten ,dass was "wob" gesagt hat.