<?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[Überladen virtueller Funktionen C++]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand erklären, warum ich im Beispiel unten die überladene<br />
Funktion &quot;doAmazingStuff&quot; mit einem Parameter für ein Objekt der<br />
abgeleiteten Klasse nicht aufrufen kann?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class A
{
public:
  void doBoringStuff(double a) { doAmazingStuff(a, a/2); };

public:
  void doAmazingStuff(double a) { doAmazingStuff(a, a/2); };
  virtual void doAmazingStuff(double a, double b) = 0;
};

class B : public A
{
public:
  void doAmazingStuff(double a, double b) { std::cout &lt;&lt; a &lt;&lt; &quot; &quot; &lt;&lt; b &lt;&lt; std::endl; };
};

int main()
{
  A* a = new B;
  // OK
  a-&gt;doAmazingStuff(8);

  B b;
  // OK
  b.doBoringStuff(8);
  // Compiler error
  b.doAmazingStuff(8);

  return 0;
}
</code></pre>
<p>Nur die Zeile &quot;b.doAmazingStuff(8);&quot; erzeugt folgenden Fehler:</p>
<p>test.cpp:29: error: no matching function for call to<br />
‘B::doAmazingStuff(int)’<br />
test.cpp:16: note: candidates are: virtual void B::doAmazingStuff(double, double)</p>
<p>Vielen Dank!<br />
Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/275000/überladen-virtueller-funktionen-c</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 05:30:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/275000.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Oct 2010 21:14:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladen virtueller Funktionen C++ on Wed, 06 Oct 2010 21:14:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Kann mir jemand erklären, warum ich im Beispiel unten die überladene<br />
Funktion &quot;doAmazingStuff&quot; mit einem Parameter für ein Objekt der<br />
abgeleiteten Klasse nicht aufrufen kann?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class A
{
public:
  void doBoringStuff(double a) { doAmazingStuff(a, a/2); };

public:
  void doAmazingStuff(double a) { doAmazingStuff(a, a/2); };
  virtual void doAmazingStuff(double a, double b) = 0;
};

class B : public A
{
public:
  void doAmazingStuff(double a, double b) { std::cout &lt;&lt; a &lt;&lt; &quot; &quot; &lt;&lt; b &lt;&lt; std::endl; };
};

int main()
{
  A* a = new B;
  // OK
  a-&gt;doAmazingStuff(8);

  B b;
  // OK
  b.doBoringStuff(8);
  // Compiler error
  b.doAmazingStuff(8);

  return 0;
}
</code></pre>
<p>Nur die Zeile &quot;b.doAmazingStuff(8);&quot; erzeugt folgenden Fehler:</p>
<p>test.cpp:29: error: no matching function for call to<br />
‘B::doAmazingStuff(int)’<br />
test.cpp:16: note: candidates are: virtual void B::doAmazingStuff(double, double)</p>
<p>Vielen Dank!<br />
Tobias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962332</guid><dc:creator><![CDATA[Tobias102010]]></dc:creator><pubDate>Wed, 06 Oct 2010 21:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen virtueller Funktionen C++ on Wed, 06 Oct 2010 21:23:50 GMT]]></title><description><![CDATA[<p><a href="http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.9" rel="nofollow">http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.9</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1962334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962334</guid><dc:creator><![CDATA[Gast201010]]></dc:creator><pubDate>Wed, 06 Oct 2010 21:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen virtueller Funktionen C++ on Thu, 07 Oct 2010 00:53:50 GMT]]></title><description><![CDATA[<p>Weil doAmazingStuff(double a) der Klasse A von doAmazingStuff(double a, double b) der Klasse B verdeckt wird.</p>
<p>Der Aufruf sollte gehen:</p>
<pre><code class="language-cpp">b.A::doAmazingStuff(8);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1962360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962360</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Thu, 07 Oct 2010 00:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen virtueller Funktionen C++ on Thu, 07 Oct 2010 01:22:54 GMT]]></title><description><![CDATA[<p>Alternativ sollte auch gehen:</p>
<pre><code class="language-cpp">static_cast&lt;A&amp;&gt;(b).doAmazingStuff(8);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1962368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1962368</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 07 Oct 2010 01:22:54 GMT</pubDate></item></channel></rss>