<?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[std::vector]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

class a
{
    public:
    virtual void dothat(a&amp; x)
    {
        cout &lt;&lt; &quot; basis &quot; &lt;&lt; endl;
    }
};
class b: public a
{
    public:

    void dothat(a&amp; x)
    {
        cout &lt;&lt; &quot; basis &quot; &lt;&lt; endl;
    }
    void dothat( b&amp; x)
    {
        cout &lt;&lt; &quot;abgeleitet&quot; &lt;&lt; endl;
    }
};

int main()
{
    std::vector&lt;a*&gt; v;
    v.push_back(new a);
    v.push_back(new b);
    v[0]-&gt;dothat((*v[0]));
    v[0]-&gt;dothat((*v[1]));
    v[1]-&gt;dothat((*v[0]));
    v[1]-&gt;dothat((*v[1]));

    return 0;
}
</code></pre>
<p>was ich eigentlich möchte ist dass die im vector enthaltenen b´s beim aufruf ein anderes b erkennen und &quot;abgeleitet&quot; ausgeben;<br />
da der vector aber vom typ a* ist scheint dass nicht zu funktionieren, wuie ikann man es dennoch zum laufen bringen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>//Codetags repariert</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224481/std-vector</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 13:14:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224481.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Oct 2008 08:24:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 08:50:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;

using namespace std;

class a
{
    public:
    virtual void dothat(a&amp; x)
    {
        cout &lt;&lt; &quot; basis &quot; &lt;&lt; endl;
    }
};
class b: public a
{
    public:

    void dothat(a&amp; x)
    {
        cout &lt;&lt; &quot; basis &quot; &lt;&lt; endl;
    }
    void dothat( b&amp; x)
    {
        cout &lt;&lt; &quot;abgeleitet&quot; &lt;&lt; endl;
    }
};

int main()
{
    std::vector&lt;a*&gt; v;
    v.push_back(new a);
    v.push_back(new b);
    v[0]-&gt;dothat((*v[0]));
    v[0]-&gt;dothat((*v[1]));
    v[1]-&gt;dothat((*v[0]));
    v[1]-&gt;dothat((*v[1]));

    return 0;
}
</code></pre>
<p>was ich eigentlich möchte ist dass die im vector enthaltenen b´s beim aufruf ein anderes b erkennen und &quot;abgeleitet&quot; ausgeben;<br />
da der vector aber vom typ a* ist scheint dass nicht zu funktionieren, wuie ikann man es dennoch zum laufen bringen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>//Codetags repariert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596709</guid><dc:creator><![CDATA[gasst]]></dc:creator><pubDate>Fri, 10 Oct 2008 08:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 08:57:15 GMT]]></title><description><![CDATA[<p>gasst schrieb:</p>
<blockquote>
<p>was ich eigentlich möchte ist dass die im vector enthaltenen b´s beim aufruf ein anderes b erkennen und &quot;abgeleitet&quot; ausgeben;<br />
da der vector aber vom typ a* ist scheint dass nicht zu funktionieren, wuie ikann man es dennoch zum laufen bringen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Es gibt mehrere Lösungsansätze, wobei es dann abhängig von der eigentlichen Aufgabenstellung ist, was wirklich passieren soll.</p>
<p>1. Verwendung von RTTI, typeid und dynamic_cast; Wobei ich das eigentlich vermeide.<br />
2. Änderung der Schnittstelle...</p>
<pre><code class="language-cpp">class a
{
    protected:
        virtual void dothat_()
        {
            cout &lt;&lt; &quot; basis &quot; &lt;&lt; endl;
        }

    public:
        void dothat(a&amp; x)
        {
            // Ich nehme mal an das die Funktion von x abhängen soll...
            x.dothat_();
        }
};

class b: public a
{
    protected:
        virtual void dothat_()
        {
            cout &lt;&lt; &quot;abgeleitet&quot; &lt;&lt; endl;
        }
};
</code></pre>
<p>Es gibt sicherlich noch weitere Lösungen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596740</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 10 Oct 2008 08:57:15 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 09:15:04 GMT]]></title><description><![CDATA[<p>es soll sich um eine kollisionsroutine handeln,<br />
ein alienshooter , marines gegen aliens,<br />
basisklasse : objekt<br />
abgeleitet : alien<br />
marine<br />
wand<br />
rakete<br />
bisher hatte ich es so:<br />
jedes element soll überprüfen ob es bei seiner nächsten bewegung mit einem anderen kollidieren würde, falls ja soll es richtung ändern;<br />
war gedacht um zu verhindern dass meine aliens gegen oder in wände laufen;<br />
das problem :<br />
sie weichen jetz auch raketen aus und um gekehrt, und meine wände bleiben auch nur stehen weil sie keine geschwindigkeit haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
<p>was ich nun möchte ist eine funktion die anhand des objekts mit dem es kollidieren würde weiß was es zu tun hat;<br />
zB alien... ist das objeckt eine wand -&gt; weiche aus<br />
ist das objekt eine rakete -&gt; laufe weiter<br />
diese funktion überprüft ob im nächsten schritt eine kollision stattfinden würde, neben der gibt es eine funktion die aufgetretene kollisionen managt,<br />
zB rakete kollidiert mit alien - &gt; zerstört beide</p>
<p>im mom befinden sich sowohl meine aliens als auch meine anderen objekte in einem vector &lt;objekt* &gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596759</guid><dc:creator><![CDATA[gasst]]></dc:creator><pubDate>Fri, 10 Oct 2008 09:15:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 10:09:42 GMT]]></title><description><![CDATA[<p>Gib ihnen doch einfach einen Typ mit, der in der Basisklasse definiert ist. Das setzt du dann im jeweiligen Konstruktor. So kannst du dann entscheiden was zu tun ist.</p>
<pre><code class="language-cpp">enum ObjectType{
  OT_NONE = -1,
  OT_MARINE,
  OT_ALIEN,
  OT_ROCKET,
  OT_LAST
};

class Base{
  ObjectType mType;
};
</code></pre>
<p>Oder aber:</p>
<pre><code class="language-cpp">class Base{
  virtual void collideWith(Base *b) = 0;
  virtual void collideWithAlien(Base *b) = 0;
  virtual void collideWithRocket(Base *b) = 0;
};

class Alien{
  virtual void collideWith(Base *b){
    b-&gt;collideWithAlien(b);
  }
};
</code></pre>
<p>Nicht wirklich schick, da Base so jedesmal um eine Funktion erweitert werden müsste, wenn eine Unterklasse hinzukommt, funzt aber. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596808</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 10 Oct 2008 10:09:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 11:44:04 GMT]]></title><description><![CDATA[<p>google mal nach &quot;multiple dispatch&quot;, das ist genau das worum es hier geht: Polymorphes Verhalten in Abhängigkeit von mehr als einem dynamischen Typ.<br />
Gleich vorweg: das ist kein leichtes Thema, man kanns brute-force lösen, was aber fehleranfällig und tipp-aufwändig sein kann. Es gibt auch Möglichkeiten für elegantere Lösungen, die dafür recht kompliziert sein können.<br />
In Alexandrescu's <em>Modern C++ Design</em> gibts ein ganzes Kapitel zum Thema mit verschiedenen Lösungsansätzen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596890</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 10 Oct 2008 11:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 13:14:29 GMT]]></title><description><![CDATA[<p>hat jemand einen guten literaturtipp?</p>
<p>ich bräuchte mal n buch dass sich im leicht fortsgeschrittenen bereich bewegt;<br />
alle bücher die ich bisher hab, fangen mit &quot;was ist c++&quot; an und die anderen mit themen wie netzwetrkprogrammierung womit ich noch total überfordet bin</p>
<p>ausserdem falls einer erfahrung hat, wie schwer ist es seinen programmierschatz ausgängig von c++ auf c# noch zu erweitern ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596957</guid><dc:creator><![CDATA[gasst]]></dc:creator><pubDate>Fri, 10 Oct 2008 13:14:29 GMT</pubDate></item><item><title><![CDATA[Reply to std::vector on Fri, 10 Oct 2008 13:25:11 GMT]]></title><description><![CDATA[<p>gasst schrieb:</p>
<blockquote>
<p>hat jemand einen guten literaturtipp?</p>
<p>ich bräuchte mal n buch dass sich im leicht fortsgeschrittenen bereich bewegt;<br />
alle bücher die ich bisher hab, fangen mit &quot;was ist c++&quot; an und die anderen mit themen wie netzwetrkprogrammierung womit ich noch total überfordet bin</p>
</blockquote>
<p>pumuckl hat da ja schon was genannt. Und im FAQ findest du da auch einiges, aber ich würde mal sagen, dass dir Effektiv C++ von Scott Meyers zusagen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1596964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1596964</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 10 Oct 2008 13:25:11 GMT</pubDate></item></channel></rss>