<?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[Vererbungsproblem mit Stack]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Problem:</p>
<p>class X<br />
{</p>
<p>}</p>
<p>class Y : public X<br />
{<br />
}</p>
<p>class Z : public X<br />
{<br />
}</p>
<p>in einer anderen Klasse habe ich einen stack</p>
<p>static std::stack&lt;X*&gt; myStack;</p>
<p>In diesen stack will ich nur Y und Z Objekte schreiben. Wenn ich aber folgendes mache:</p>
<p>Y myY;<br />
...<br />
myStack.push(myY);</p>
<p>dann werden nur die Eigenschaften von der Superklasse X übernommen. Was mache ich falsch?</p>
<p>danke!<br />
mfg,<br />
shed</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175646/vererbungsproblem-mit-stack</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 04:40:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175646.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Mar 2007 19:54:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Mon, 12 Mar 2007 19:54:27 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgendes Problem:</p>
<p>class X<br />
{</p>
<p>}</p>
<p>class Y : public X<br />
{<br />
}</p>
<p>class Z : public X<br />
{<br />
}</p>
<p>in einer anderen Klasse habe ich einen stack</p>
<p>static std::stack&lt;X*&gt; myStack;</p>
<p>In diesen stack will ich nur Y und Z Objekte schreiben. Wenn ich aber folgendes mache:</p>
<p>Y myY;<br />
...<br />
myStack.push(myY);</p>
<p>dann werden nur die Eigenschaften von der Superklasse X übernommen. Was mache ich falsch?</p>
<p>danke!<br />
mfg,<br />
shed</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244281</guid><dc:creator><![CDATA[shed]]></dc:creator><pubDate>Mon, 12 Mar 2007 19:54:27 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Mon, 12 Mar 2007 20:25:24 GMT]]></title><description><![CDATA[<p>Du denkst zu viel Java :p</p>
<p>Im Ernst, das was du machen willst erreicht man in C++ über virtuelle Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244319</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 12 Mar 2007 20:25:24 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Mon, 12 Mar 2007 20:32:35 GMT]]></title><description><![CDATA[<p>Bevor noch irgendwelche Katastrophen passieren, möchte ich an dieser Stelle erwähnen, dass du bei zukünftlichen Postings bitte das Syntax Highlighting benutzen sollst, somit wird dein Code farbig markiert und somit übersichtlicher und lesbarer. Einfach das nächste mal den kompletten Code markieren, und auf die untere Schaltfläche &quot;C/C++&quot; klicken <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>
<p>MfG mikey.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244324</guid><dc:creator><![CDATA[mikey]]></dc:creator><pubDate>Mon, 12 Mar 2007 20:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Mon, 12 Mar 2007 20:36:34 GMT]]></title><description><![CDATA[<p>Ok dann mit den highlighting werde ich mir zu Herzen nehmen <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>
<p>Verstehe aber trotzdem nicht ganz wie ich das über virtuelle Funktionen lösen kann.<br />
Bitte um einen kleinen Denkanstoß <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>
<p>Danke!<br />
mfg,<br />
shed</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244329</guid><dc:creator><![CDATA[shed]]></dc:creator><pubDate>Mon, 12 Mar 2007 20:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Mon, 12 Mar 2007 20:42:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;stack&gt;
#include &lt;iostream&gt;

class Base
{
public:
    virtual void Booyakah () {}

    virtual ~Base () {} // virtueller Destruktor, immer hinzufügen, wenn
                        // die Klasse Basisklasse sein soll und virtuelle Funktionen enthält
};

class Derived1 : public Base
{
public:
    virtual void Booyakah ()
    {
        std::cout &lt;&lt; &quot;Booyakah!&quot; &lt;&lt; std::endl;
    }
};

class Derived2 : public Base
{
public:
     virtual void Booyakah ()
     {
         std::cout &lt;&lt; &quot;bOOYAKAH1&quot; &lt;&lt; std::endl;
     }
};

int main ()
{
     std::stack&lt;Base*&gt; s;
     s.push (new Derived1);
     s.push (new Derived2);
     Base* p = s.top ();
     s.pop ();
     p-&gt;Booyakah ();
     delete p;
     p = s.top ();
     s.pop ();
     p-&gt;Booyakah ();
     delete p;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1244337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244337</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 12 Mar 2007 20:42:59 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 06:20:42 GMT]]></title><description><![CDATA[<p>Das funktioniert ja aber nur bei Methoden oder? Mein Problem ist, dass ich die Attribute die die Subklassen zusätzlich haben nicht mitgespeichert werden.<br />
zB</p>
<pre><code class="language-cpp">class Base
{
  public:
    int attrBase;
}

class Derived1 : public Base
{
  public:
   int attrDerived1;
}

class Derived2 : public Base
{
  public:
   int attrDerived2;
} 

int main()
{
  static std::stack&lt;Base*&gt; myStack; 
  Derived1 myDerived1;
  myStack.push(myDerived1);
}
</code></pre>
<p>Mein Problem ist also, dass wenn ich eine Subklasse in den Stack schreibe dann habe ich nur das Attribute 'attrBase' nicht aber &quot;attrDerived1&quot;. Dies kann ich ja durch virtual nicht lösen oder? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244438</guid><dc:creator><![CDATA[shed]]></dc:creator><pubDate>Tue, 13 Mar 2007 06:20:42 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 07:02:36 GMT]]></title><description><![CDATA[<p>ich hab mal eine frage hierzu:</p>
<pre><code class="language-cpp">Base* p = s.top ();
s.pop ();
p-&gt;Booyakah ();
</code></pre>
<p>p zeigt doch auf das oberste element aus s oder?<br />
bei s.top(), wird da nicht auch p ungültig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244447</guid><dc:creator><![CDATA[sadsadsadsa]]></dc:creator><pubDate>Tue, 13 Mar 2007 07:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 07:07:01 GMT]]></title><description><![CDATA[<p>Ich kann dich beruhigen: Die Attribute werden mitgespeichert - nur weiß ein Base* Zeiger nichts von ihrer Existenz. Das heißt, du mußt entweder in der Basisklasse virtuelle Getter bereitstellen (und in der abgeleiteten Klasse entsprechend anpassen) oder du nutzt dynamic_cast&lt;&gt; (auch wenn das ein sicheres Zeichen für schlechtes Design ist ;)).</p>
<p>@sadsadsadsa (sehr einfallsreicher Name :D):<br />
s.pop() entfernt nur das oberste Element (der Zeiger) aus dem Stack - die Daten hinter dem Zeiger werden dabei nicht angefasst. Das Objekt selbst überlebt so lange, bis du es per delete vernichtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244450</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 13 Mar 2007 07:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 09:22:46 GMT]]></title><description><![CDATA[<p>shed schrieb:</p>
<blockquote>
<p>...<br />
In diesen stack will ich nur Y und Z Objekte schreiben...</p>
</blockquote>
<p>Warum ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Ich bin immer sehr skeptisch, wenn jemand in einen Container &quot;wirklich unterschiedliche&quot; Sachen reintun will. Eigentlich fallen mir nur 3 Gründe für sowas ein:</p>
<ul>
<li>Entweder &quot;packt&quot; man sie doch nur aufgrund einheitlicher Eigenschaften (die dann auch der Basisklasse bekannt sind),</li>
<li>Oder man wird durch &quot;harte technische Fakten&quot; zu dieser Bedienung einer Schnittstelle gezwungen (&quot;weiß nicht, wie's besser geht&quot; zählt da nicht <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="😉"
    /> )</li>
<li>Oder man hat sich tatsächlich das Problem noch nicht sauber durchdacht.</li>
</ul>
<p>Mal eine Frage: Wie heißt Dein Stack fachlich ? &quot;Y_oder_Z_Objekte_Oder_sonstiges&quot; ? <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>
<p>Also nochmal mein Tipp: Gemeinsamem Eigenschaften identifizieren, in eine Basisklasse auslagern (per virtual) und Laufzeitpolymorphie nutzen (=&gt; .filmor).</p>
<p>Ach ja:</p>
<p>shed schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">...
  static std::stack&lt;Base*&gt; myStack; 
  Derived1 myDerived1;
  myStack.push(myDerived1);
}
</code></pre>
<p>...</p>
</blockquote>
<p>Hier fehlt noch ein Adressoperator:</p>
<pre><code class="language-cpp">...
  myStack.push(&amp;myDerived1);
}
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244535</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 13 Mar 2007 09:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 09:30:14 GMT]]></title><description><![CDATA[<p>Ah, beim Adressoperator hab ich mich nur vertippt <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>
<p>Naja dann werde ich mir das Problem noch einmal durchdenken. Vielleicht is es ja wirklich besser, nicht beides in den gleichen Container zu packen.</p>
<p>Vielen Dank für die Tipps! <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="🙂"
    /> (ich hab bis jetzt nur java programmiert, merkt man wahrscheinlich an meinen posts <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>
<p>mfg,<br />
shed</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244542</guid><dc:creator><![CDATA[shed]]></dc:creator><pubDate>Tue, 13 Mar 2007 09:30:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 11:32:58 GMT]]></title><description><![CDATA[<p>Das hier</p>
<pre><code class="language-cpp">...
  static std::stack&lt;Base*&gt; myStack;
  Derived1 myDerived1;
  myStack.push(&amp;myDerived1);
}
</code></pre>
<p>halte ich für keine gute Idee. Du hättest hier nach der schließenden Klammer lauter ungültige Objekte in deinem Stack, da du Pointer auf lokale Objekte speicherst. Mach es liebe wie .filmor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244585</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 13 Mar 2007 11:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Tue, 13 Mar 2007 19:03:10 GMT]]></title><description><![CDATA[<p>Hab das Problem lösen können Danke! Und ich hab jetzt für jeden Typ einen eigenen Stack <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>
<p>Danke nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1244942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1244942</guid><dc:creator><![CDATA[shed]]></dc:creator><pubDate>Tue, 13 Mar 2007 19:03:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem mit Stack on Wed, 14 Mar 2007 07:49:23 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Das hier</p>
<pre><code class="language-cpp">...
  static std::stack&lt;Base*&gt; myStack;
  Derived1 myDerived1;
  myStack.push(&amp;myDerived1);
}
</code></pre>
<p>halte ich für keine gute Idee....</p>
</blockquote>
<p>Huuups - hast natürlich Recht !<br />
(Hatte gar nicht gesehen, dass er den Scope wieder verlässt).</p>
<p>shed schrieb:</p>
<blockquote>
<p>Hab das Problem lösen können Danke! Und ich hab jetzt für jeden Typ einen eigenen Stack <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>
</blockquote>
<p>Sehr gut ! <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="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245150</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 14 Mar 2007 07:49:23 GMT</pubDate></item></channel></rss>