<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Struct als globale, statische oder einzelne Instanzen &#x2F; Referenzen, Zeiger oder Kopien]]></title><description><![CDATA[<p>Guten Abend</p>
<p>Ich habe einige Klassen Funktionen, die ein struct erhalten sollen.<br />
Das struct Weapon dient dient eigentlich nur als Datenspeicher, wird aber nicht verändert.</p>
<pre><code class="language-cpp">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&amp; 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;
    }
</code></pre>
<p>Sind mir jetzt fast schon zuviele structs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Nun meine Fragen,<br />
- 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*..<br />
- sollte ich die Waffen in der Hit struct als Referenzen ablegen oder als Zeiger?<br />
- und die gleiche Frage beim return Wert von offence: Referenz oder Zeiger oder Kopie?</p>
<p>Danke schonmal im voraus<br />
fg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175465/struct-als-globale-statische-oder-einzelne-instanzen-referenzen-zeiger-oder-kopien</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 04:00:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175465.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Mar 2007 19:01:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struct als globale, statische oder einzelne Instanzen &#x2F; Referenzen, Zeiger oder Kopien on Sat, 10 Mar 2007 19:01:31 GMT]]></title><description><![CDATA[<p>Guten Abend</p>
<p>Ich habe einige Klassen Funktionen, die ein struct erhalten sollen.<br />
Das struct Weapon dient dient eigentlich nur als Datenspeicher, wird aber nicht verändert.</p>
<pre><code class="language-cpp">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&amp; 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;
    }
</code></pre>
<p>Sind mir jetzt fast schon zuviele structs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Nun meine Fragen,<br />
- 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*..<br />
- sollte ich die Waffen in der Hit struct als Referenzen ablegen oder als Zeiger?<br />
- und die gleiche Frage beim return Wert von offence: Referenz oder Zeiger oder Kopie?</p>
<p>Danke schonmal im voraus<br />
fg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243055</guid><dc:creator><![CDATA[Eldoran]]></dc:creator><pubDate>Sat, 10 Mar 2007 19:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to Struct als globale, statische oder einzelne Instanzen &#x2F; Referenzen, Zeiger oder Kopien on Mon, 12 Mar 2007 02:39:25 GMT]]></title><description><![CDATA[<p>Eldoran schrieb:</p>
<blockquote>
<p>- 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*..</p>
</blockquote>
<p>Ich verstehe deinen Aufbau nicht, sorry. Vielleicht solltest du diesen noch mal überdenken...</p>
<p>Eldoran schrieb:</p>
<blockquote>
<p>- sollte ich die Waffen in der Hit struct als Referenzen ablegen oder als Zeiger?</p>
</blockquote>
<p>Als Objekt. Du legst ganz normal eine Variable an, zu jedem &quot;Hit&quot; gehört eine Weapon-Struktur, das passt doch?</p>
<p>Eldoran schrieb:</p>
<blockquote>
<p>- und die gleiche Frage beim return Wert von offence: Referenz oder Zeiger oder Kopie?</p>
</blockquote>
<p>Falls &quot;Hit&quot; vom Speicher her mal größer werden sollte, per Referenz.<br />
Ich übergebe Klassen sehr oft per Referenz und wüsste nicht, was dagegen spricht.</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1243727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1243727</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Mon, 12 Mar 2007 02:39:25 GMT</pubDate></item></channel></rss>