<?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[virtual verursacht myseriösen Fehler]]></title><description><![CDATA[<p>Hey Leute,<br />
Eine prinzipielle Frage. Wenn ich folgende zwei Klassen habe:</p>
<pre><code>class A
{

};
class B : public A
{
   public:
    virtual test(void){return 2;}
};
</code></pre>
<p>Und jetzt schreibe:</p>
<pre><code>A * a = new A();
a = new B();
((B*)a)-&gt;test();
</code></pre>
<p>So kommt es zu einem Laufzeitfehler.<br />
Lösche ich das virtual funktioniert alles wie geschmiert. Woran liegt das?</p>
<p>Liebe Grüße<br />
David</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331533/virtual-verursacht-myseriösen-fehler</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 15:43:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331533.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Mar 2015 14:24:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual verursacht myseriösen Fehler on Thu, 05 Mar 2015 14:24:00 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
Eine prinzipielle Frage. Wenn ich folgende zwei Klassen habe:</p>
<pre><code>class A
{

};
class B : public A
{
   public:
    virtual test(void){return 2;}
};
</code></pre>
<p>Und jetzt schreibe:</p>
<pre><code>A * a = new A();
a = new B();
((B*)a)-&gt;test();
</code></pre>
<p>So kommt es zu einem Laufzeitfehler.<br />
Lösche ich das virtual funktioniert alles wie geschmiert. Woran liegt das?</p>
<p>Liebe Grüße<br />
David</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445429</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445429</guid><dc:creator><![CDATA[David777]]></dc:creator><pubDate>Thu, 05 Mar 2015 14:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to virtual verursacht myseriösen Fehler on Thu, 05 Mar 2015 14:32:26 GMT]]></title><description><![CDATA[<p>Visual C++ 5.0 ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445430</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Thu, 05 Mar 2015 14:32:26 GMT</pubDate></item><item><title><![CDATA[Reply to virtual verursacht myseriösen Fehler on Thu, 05 Mar 2015 16:56:45 GMT]]></title><description><![CDATA[<p>Nein, in eclipse <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="🙂"
    /> mit Linux</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445474</guid><dc:creator><![CDATA[David777]]></dc:creator><pubDate>Thu, 05 Mar 2015 16:56:45 GMT</pubDate></item><item><title><![CDATA[Reply to virtual verursacht myseriösen Fehler on Thu, 05 Mar 2015 17:02:31 GMT]]></title><description><![CDATA[<p>Das sollte eigentlich funktionieren. Wobei ich nicht verstehe, wie man so einen Schwachsinn schreiben kann. Der Code ist echt übel.</p>
<p>Statt <code>A* a</code> kannst Du genauso gut <code>void* a</code> schreiben. Das ist völlig egal. Einen C-Style-Cast sollte man nicht verwenden und ein void in &quot;test(void)&quot; ist mehr als flüssig. Und der Methode fehlt der Rückgabewert. So nebenbei erzeugst Du einen memoryleak, indem Du ein A anlegst und den Zeiger gleich wieder vergisst.</p>
<p>Hilfreich, wenn nicht gar unbedingt notwendig wäre ein vollständiges compilierbares Beispiel und Angabe zum Compiler und verwendeter Compileoptionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445475</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 05 Mar 2015 17:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to virtual verursacht myseriösen Fehler on Thu, 05 Mar 2015 17:04:10 GMT]]></title><description><![CDATA[<p>David777 schrieb:</p>
<blockquote>
<p>Nein, in eclipse <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="🙂"
    /> mit Linux</p>
</blockquote>
<p>Na das ging ja schnell. Leider fehlt die Angabe des verwendeten Compilers. Mit welchem Programm Du das Programm eintippst und den Compiler aufrufst ist für die Problemstellung völlig schnuppe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445476</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 05 Mar 2015 17:04:10 GMT</pubDate></item><item><title><![CDATA[Reply to virtual verursacht myseriösen Fehler on Thu, 05 Mar 2015 17:12:53 GMT]]></title><description><![CDATA[<p>Das doppelte new sieht sowieso nach Mist aus. Bist du sicher, dass du in deinem Programm als letztes ein 'new B' hast und kein 'new A'?<br />
(das würde erklären, warum non-virtual klappt/klappen kann - und virtual nicht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2445479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2445479</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Thu, 05 Mar 2015 17:12:53 GMT</pubDate></item></channel></rss>