<?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 Funktion wird aus der Basisklasse ausgerufen]]></title><description><![CDATA[<p>Hi, ich habe eine Basisklasse &quot;Object&quot; und davon eine abgeleitete &quot;Int16&quot;.<br />
Jetzt versuche ich die in Int16 überschriebene Funktion aufzurufen.</p>
<p>Hier der Code ...</p>
<pre><code class="language-cpp">Int16 bla = 100;
	String blabla = &quot;Hundert = &quot;;
	blabla += bla;

	printf(&quot;%s\n&quot;, blabla.Buffer());
</code></pre>
<p>Die Ausgabe ...</p>
<blockquote>
<p>Hundert = {Object}</p>
</blockquote>
<p>Hier die Anwendung ...</p>
<pre><code class="language-cpp">void Append(Object a)
		{
			buffer = strcat(buffer, a.GetString());

			Secure();
		};
		void operator += (Object a)
		{
			Append(a);
		};
</code></pre>
<p>Hier die Basis ...</p>
<pre><code class="language-cpp">class Object
	{
	public:
		virtual char* GetString(void)
		{
			return (char*)&quot;{Object}&quot;;
		};
	};
</code></pre>
<p>Hier Int16 ...</p>
<pre><code class="language-cpp">char* GetString(void)
		{
			char* target = new char[6];

			sprintf(target, FORMATTER, buffer);

			return target;
		};
</code></pre>
<p>Ich würde gerne wissen, warum der nicht die überschriebene Version von GetString aufruft, sondern die aus der Basisklasse -.-</p>
<p>Complier ist G++</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226676/virtual-funktion-wird-aus-der-basisklasse-ausgerufen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 18:59:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226676.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 04 Nov 2008 14:55:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Virtual Funktion wird aus der Basisklasse ausgerufen on Tue, 04 Nov 2008 14:55:42 GMT]]></title><description><![CDATA[<p>Hi, ich habe eine Basisklasse &quot;Object&quot; und davon eine abgeleitete &quot;Int16&quot;.<br />
Jetzt versuche ich die in Int16 überschriebene Funktion aufzurufen.</p>
<p>Hier der Code ...</p>
<pre><code class="language-cpp">Int16 bla = 100;
	String blabla = &quot;Hundert = &quot;;
	blabla += bla;

	printf(&quot;%s\n&quot;, blabla.Buffer());
</code></pre>
<p>Die Ausgabe ...</p>
<blockquote>
<p>Hundert = {Object}</p>
</blockquote>
<p>Hier die Anwendung ...</p>
<pre><code class="language-cpp">void Append(Object a)
		{
			buffer = strcat(buffer, a.GetString());

			Secure();
		};
		void operator += (Object a)
		{
			Append(a);
		};
</code></pre>
<p>Hier die Basis ...</p>
<pre><code class="language-cpp">class Object
	{
	public:
		virtual char* GetString(void)
		{
			return (char*)&quot;{Object}&quot;;
		};
	};
</code></pre>
<p>Hier Int16 ...</p>
<pre><code class="language-cpp">char* GetString(void)
		{
			char* target = new char[6];

			sprintf(target, FORMATTER, buffer);

			return target;
		};
</code></pre>
<p>Ich würde gerne wissen, warum der nicht die überschriebene Version von GetString aufruft, sondern die aus der Basisklasse -.-</p>
<p>Complier ist G++</p>
<p>MFG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610069</guid><dc:creator><![CDATA[RobthaR]]></dc:creator><pubDate>Tue, 04 Nov 2008 14:55:42 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Funktion wird aus der Basisklasse ausgerufen on Tue, 04 Nov 2008 14:59:11 GMT]]></title><description><![CDATA[<p>Weil der Parameter von operator+= und Append ein einfaches Object ist. Polymorph sind nur Referenzen und Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610073</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 04 Nov 2008 14:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Funktion wird aus der Basisklasse ausgerufen on Tue, 04 Nov 2008 15:00:24 GMT]]></title><description><![CDATA[<p>Du musst eine Referenz oder einen Zeiger übergeben, da dynamische Polymorphie mit Objekten nicht direkt funktioniert (bzw. ist die übergebene Instanz immer vom Typ <code>Object</code> ; es wird automatisch upgecastet.</p>
<p>Übrigens solltest du in C++ vom C-Rumgefrickel wegkommen. Und Funktionen brauchen kein Semikolon am Ende des Blocks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610075</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 04 Nov 2008 15:00:24 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Funktion wird aus der Basisklasse ausgerufen on Tue, 04 Nov 2008 15:00:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void Append(Object&amp; a)
        {
            buffer = strcat(buffer, a.GetString()); //&amp; vergessen

            Secure();
        };
        void operator += (Object&amp; a) //&amp; vergessen
        {
            Append(a);
        };
</code></pre>
<p>PS: Der Code ist gruselig. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610076</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 04 Nov 2008 15:00:29 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Funktion wird aus der Basisklasse ausgerufen on Tue, 04 Nov 2008 15:03:55 GMT]]></title><description><![CDATA[<p>Ha! Endlich mal vor Tachyon gepostet (und seien es nur 5 Sekunden). <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>Der Code ist wirklich gruselig. Nimm <code>std::string</code> statt <code>char*</code> und <code>std::stringstream</code> statt <code>sprintf()</code> , dann bist du C++ schon ein bisschen näher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610082</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 04 Nov 2008 15:03:55 GMT</pubDate></item><item><title><![CDATA[Reply to Virtual Funktion wird aus der Basisklasse ausgerufen on Tue, 04 Nov 2008 15:44:13 GMT]]></title><description><![CDATA[<p>Das ging jetzt aber echt flott <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 versteh aber irgendwie nich was daran gruselig ist<br />
die std::sachen hätt ich wirklich nehmen können, muss ich zugeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1610104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1610104</guid><dc:creator><![CDATA[RobthaR]]></dc:creator><pubDate>Tue, 04 Nov 2008 15:44:13 GMT</pubDate></item></channel></rss>