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


Anmelden zum Antworten