<?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[Kindklasse verdeckt Methoden der Basisklasse - isokonform?]]></title><description><![CDATA[<p>Hiho,</p>
<p>folgende Ausgangslage:</p>
<pre><code class="language-cpp">struct Base
{
    void foo() { cout &lt;&lt; &quot;Base&quot; &lt;&lt; endl;
};

struct Child : public Base
{
    void foo(const string&amp; text) { cout &lt;&lt; text &lt;&lt; endl; }
};

int main
{
    Child obj;
    obj.foo(); //Fehler
}
</code></pre>
<p>Der Compiler findet das &quot;foo&quot; nicht. Das &quot;foo&quot; mit Parametern aus der Kindklasse überdeckt das aus der Basisklasse, obwohl die Parameterlisten doch unterschiedlich sind??? Ist das so ISO-Konform?</p>
<p>MfG Pellaeon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251078/kindklasse-verdeckt-methoden-der-basisklasse-isokonform</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 17:01:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251078.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Sep 2009 08:20:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kindklasse verdeckt Methoden der Basisklasse - isokonform? on Tue, 29 Sep 2009 08:20:06 GMT]]></title><description><![CDATA[<p>Hiho,</p>
<p>folgende Ausgangslage:</p>
<pre><code class="language-cpp">struct Base
{
    void foo() { cout &lt;&lt; &quot;Base&quot; &lt;&lt; endl;
};

struct Child : public Base
{
    void foo(const string&amp; text) { cout &lt;&lt; text &lt;&lt; endl; }
};

int main
{
    Child obj;
    obj.foo(); //Fehler
}
</code></pre>
<p>Der Compiler findet das &quot;foo&quot; nicht. Das &quot;foo&quot; mit Parametern aus der Kindklasse überdeckt das aus der Basisklasse, obwohl die Parameterlisten doch unterschiedlich sind??? Ist das so ISO-Konform?</p>
<p>MfG Pellaeon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785751</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:20:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kindklasse verdeckt Methoden der Basisklasse - isokonform? on Tue, 29 Sep 2009 08:33:56 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Der Compiler findet das &quot;foo&quot; nicht. Das &quot;foo&quot; mit Parametern aus der Kindklasse überdeckt das aus der Basisklasse, obwohl die Parameterlisten doch unterschiedlich sind??? Ist das so ISO-Konform?</p>
</blockquote>
<p>Absolut. Im name lookup wird nach Namen gesucht, nicht nach Funktionssignaturen. Die Auflösung von Überladungen kann immer nur der zweite Schritt sein, nachdem die Funktionen bereits gefunden wurden. Und schließlich beschränkt sich Überdeckung nicht auf Funktionen. Zum Beispiel würde</p>
<pre><code class="language-cpp">struct Child : public Base
{
     enum { foo };
};
</code></pre>
<p>die Funktion foo aus Base ebenso überdecken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785757</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:33:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kindklasse verdeckt Methoden der Basisklasse - isokonform? on Tue, 29 Sep 2009 09:05:58 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Hiho,<br />
Der Compiler findet das &quot;foo&quot; nicht. Das &quot;foo&quot; mit Parametern aus der Kindklasse überdeckt das aus der Basisklasse, obwohl die Parameterlisten doch unterschiedlich sind??? Ist das so ISO-Konform?</p>
</blockquote>
<p>Ja. Das ist so. Die Gültigkeitsbereiche (&quot;scopes&quot;) werden immer von innen nach außen durchsucht. Das schießst auch Vererbungshierarchien ein. Sobald Funktionen im aktuellen Gültigkeitsbereich gefunden worden sind, wird die Suche abgebrochen. Dadurch können Namen in inneren scopes die von außeren verstecken. Du kannst den Effekt aber über eine using-Deklaration umgehen:</p>
<pre><code class="language-cpp">struct Base
{
    void foo() { cout &lt;&lt; &quot;Base&quot; &lt;&lt; endl;
};

struct Child : public Base
{
    using Base::foo;

    void foo(const string&amp; text) { cout &lt;&lt; text &lt;&lt; endl; }
};
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785762</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 29 Sep 2009 09:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kindklasse verdeckt Methoden der Basisklasse - isokonform? on Tue, 29 Sep 2009 08:58:08 GMT]]></title><description><![CDATA[<p>Danke für die Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1785771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1785771</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Tue, 29 Sep 2009 08:58:08 GMT</pubDate></item></channel></rss>