Struct als globale, statische oder einzelne Instanzen / Referenzen, Zeiger oder Kopien
-
Guten Abend
Ich habe einige Klassen Funktionen, die ein struct erhalten sollen.
Das struct Weapon dient dient eigentlich nur als Datenspeicher, wird aber nicht verändert.struct Weapon { bool is_longrange; Value m_strength; string m_name; }; /**************************************************/ struct Hit { bool is_longrange; Weapon m_weapon; Value m_accuracy; Value m_strength; }; /**************************************************/ struct CombatBehavior { bool has_longrange; Weapon m_longrange; Weapon m_shortrange; Armor m_armor; }; /**************************************************/ class Character { public: Character(); ~Character(); Hit offence(); void defence( const Hit& hit ); private: Value m_health; Value m_fitness; Value m_experience; Value m_strength; Value m_intelligence; Value m_sleight; Value m_physique; Inventory m_inventory; Skills m_skills; CombatBehavior m_combat_behavior; }; Hit Character::offence() { Hit hit; if( m_combat_behavior.has_longrange ) { hit.m_weapon = m_combat_behavior.m_longrange; hit.is_longrange = true; } else { hit.m_weapon = m_combat_behavior.m_shortrange; hit.is_longrange = false; } //hit.m_accuracy = random * m_sleight //hit.m_strength = random * m_strength return hit; }Sind mir jetzt fast schon zuviele structs

Nun meine Fragen,
- da es zwar verschiedene Waffentypen gibt (Schwert, Axt) sich diese aber nicht unterscheiden, reicht eigentlich eine globale Instanz pro Art aus, oder? Wie sollte ich das umsetzen, weil globale sind ja *böse*..
- sollte ich die Waffen in der Hit struct als Referenzen ablegen oder als Zeiger?
- und die gleiche Frage beim return Wert von offence: Referenz oder Zeiger oder Kopie?Danke schonmal im voraus
fg
-
Eldoran schrieb:
- da es zwar verschiedene Waffentypen gibt (Schwert, Axt) sich diese aber nicht unterscheiden, reicht eigentlich eine globale Instanz pro Art aus, oder? Wie sollte ich das umsetzen, weil globale sind ja *böse*..
Ich verstehe deinen Aufbau nicht, sorry. Vielleicht solltest du diesen noch mal überdenken...
Eldoran schrieb:
- sollte ich die Waffen in der Hit struct als Referenzen ablegen oder als Zeiger?
Als Objekt. Du legst ganz normal eine Variable an, zu jedem "Hit" gehört eine Weapon-Struktur, das passt doch?
Eldoran schrieb:
- und die gleiche Frage beim return Wert von offence: Referenz oder Zeiger oder Kopie?
Falls "Hit" vom Speicher her mal größer werden sollte, per Referenz.
Ich übergebe Klassen sehr oft per Referenz und wüsste nicht, was dagegen spricht.MfG