<?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[Problem bei Aufruf einer geerbten Funktion]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe eine Klasse die einen Pointer auf ein Element einer anderen Klasse hat:</p>
<pre><code class="language-cpp">class Foo {
    Bar* bar;
    ...
}
</code></pre>
<p>jetzt will ich in Klasse Foo eine Funktion aufrufen, die eine geerbte Funktion von Bar aufruft:</p>
<pre><code class="language-cpp">Foo::get_text(){
    this-&gt;bar-&gt;get_text();
}
</code></pre>
<p>Klasse Bar:</p>
<pre><code class="language-cpp">class Bar : protected Text {
    ...
}
</code></pre>
<pre><code class="language-cpp">class Text {
    get_text();
    std::string text;
}
</code></pre>
<p>Beim Aufruf der Funktion <em><strong>get_text()</strong></em> von Foo aus bekomme ich folgenden Fehler:</p>
<pre><code>error: request for member 'get_text' is ambiguous
</code></pre>
<p>(Codeblocks, gcc)</p>
<p>Würde gerne wissen, was falsch ist ...</p>
<p>Gruß Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240259/problem-bei-aufruf-einer-geerbten-funktion</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 01:52:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240259.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 May 2009 12:04:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 12:04:51 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe eine Klasse die einen Pointer auf ein Element einer anderen Klasse hat:</p>
<pre><code class="language-cpp">class Foo {
    Bar* bar;
    ...
}
</code></pre>
<p>jetzt will ich in Klasse Foo eine Funktion aufrufen, die eine geerbte Funktion von Bar aufruft:</p>
<pre><code class="language-cpp">Foo::get_text(){
    this-&gt;bar-&gt;get_text();
}
</code></pre>
<p>Klasse Bar:</p>
<pre><code class="language-cpp">class Bar : protected Text {
    ...
}
</code></pre>
<pre><code class="language-cpp">class Text {
    get_text();
    std::string text;
}
</code></pre>
<p>Beim Aufruf der Funktion <em><strong>get_text()</strong></em> von Foo aus bekomme ich folgenden Fehler:</p>
<pre><code>error: request for member 'get_text' is ambiguous
</code></pre>
<p>(Codeblocks, gcc)</p>
<p>Würde gerne wissen, was falsch ist ...</p>
<p>Gruß Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705258</guid><dc:creator><![CDATA[varginator]]></dc:creator><pubDate>Mon, 04 May 2009 12:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 12:27:56 GMT]]></title><description><![CDATA[<p>hi,<br />
vermutlich hast du kein gültiges objekt. Bar* bar; ist nur eine Deklaration, kein gültiges Objekt.<br />
Machmal Bar bar; und dann this-&gt;bar.get_text();<br />
oder bar = new Bar...</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705277</guid><dc:creator><![CDATA[vermut0r]]></dc:creator><pubDate>Mon, 04 May 2009 12:27:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 12:33:33 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort,</p>
<p>leider funktioniert das auch nicht, ich bekomme den selben Fehler</p>
<p>das Problem ist auch, dass ich nur einen Pointer auf das Objekt haben will</p>
<p>Gruß Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705280</guid><dc:creator><![CDATA[varginator]]></dc:creator><pubDate>Mon, 04 May 2009 12:33:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 12:38:16 GMT]]></title><description><![CDATA[<p>Du wirst irgendwo noch ein <code>Foo::get_text(/*...*/)</code> haben.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">Foo::get_text();
Foo::get_text(int a = 42);

Foo f;
f.get_text(); //welches?
</code></pre>
<p>Wenn der Aufruf von <code>Bar::get_text()</code> der mehrdeutige Aufruf sein sollte (es geht aus dem Fehler nicht hervor, ob es <code>Foo::get_text()</code> oder <code>Bar::get_text()</code> ist), dann gilt das oben gesagte analog für <code>Bar</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705282</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 04 May 2009 12:38:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 12:50:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ja, ich hab mehrere Funktionen mit dem Namen, aber alle haben eine unterschiedliche Parameteranzahl und keine Defaultwerte.</p>
<p>ich bekomme noch:</p>
<pre><code>candidates are: virtual void Text::get_text()
                virtual void Text::get_text(int)
</code></pre>
<p>ps. In Klasse Text natürlich:</p>
<pre><code class="language-cpp">virtual void get_text();
</code></pre>
<p>Also ich weis jetz nicht an was es noch liegen könnte, hat jemand vielleicht noch einen Ansatzpunkt?</p>
<p><strong>EDIT:</strong> er zeigt auf die Funktion <em>Bar::get_text()</em> <strong>/EDIT</strong></p>
<p>Gruß Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705290</guid><dc:creator><![CDATA[varginator]]></dc:creator><pubDate>Mon, 04 May 2009 12:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 13:32:34 GMT]]></title><description><![CDATA[<p>varginator schrieb:</p>
<blockquote>
<pre><code>candidates are: virtual void Text::get_text()
                virtual void Text::get_text(int)
</code></pre>
</blockquote>
<p>Dann ist doch eigentlich klar, dass <code>Text</code> zwei <code>get_text</code> -Funktionen ( <code>()</code> und <code>(int)</code> )deklariert, zwischen denen er nicht unterscheiden kann. Bist Du sicher, dass Du keine Default-Parameter für die <code>int</code> -Variante vorgibst?<br />
Vielleicht solltest Du mal Deine Klasse <code>Text</code> richtig zeigen. Von virtual sieht man in dem Beispiel oben nämlich nichts.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705308</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 04 May 2009 13:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 14:35:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Mein Code ist ziemlich lang, deshalb wollte ich hier mal ein Beispiel posten,<br />
bei welchem Teil die Probleme auftauchen, aber da ich zu wenig über mein Problem sagen kann, hier mal der relevante Teil aus meinem richtigen Code (gekürzt):</p>
<p><strong>size.h</strong></p>
<pre><code class="language-cpp">class SIZE {
    protected:
        int w, h;

    public:
        SIZE();
        SIZE(int w, int h);
        virtual ~SIZE();

    public:
        virtual int get_w();  //benutze ich um w zu bekommen
        virtual int get_h();  // &quot; h &quot;
        virtual int get_w(int &amp;w);
        virtual int get_h(int &amp;h);
};
</code></pre>
<p><strong>tile.h</strong></p>
<pre><code class="language-cpp">class TILE : protected SIZE {
    public:
        TILE();
        TILE(int w, int h);
        ~TILE();
};
</code></pre>
<p><strong>object.h</strong></p>
<pre><code class="language-cpp">class OBJECT {
    protected:
        TILE* tile;

    public:
        OBJECT();
        OBJECT(int w, int h);
        ~OBJECT();

    public:
        int get_w();
        int get_h();
        int get_w(int &amp;w);
        int get_h(int &amp;h);
};
</code></pre>
<p><strong>object.cpp</strong></p>
<pre><code class="language-cpp">...
int OBJECT::get_w(){
    return this-&gt;tile-&gt;get_w();  //Hier bekomme ich den Fehler
}

int OBJECT::get_w(int &amp;w){
    w = this-&gt;tile-&gt;get_w();
}
...
</code></pre>
<p>Der Fehler wird schon beim Kompilieren angezeigt</p>
<pre><code>error: request for member 'get_w' is ambiguous
error: candidates are: virtual int SIZE::get_w()
                       virtual int SIZE::get_w(int)
</code></pre>
<p>Hoffe, dass ich alles wichtige dabei habe ...</p>
<p>Gruß Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705374</guid><dc:creator><![CDATA[varginator]]></dc:creator><pubDate>Mon, 04 May 2009 14:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 14:52:29 GMT]]></title><description><![CDATA[<p>Hmm, so wie Du es gepostet hast, müsste es eigentlich compilieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705388</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 04 May 2009 14:52:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 15:09:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ja, so müsste es 'eigentlich' funktionieren ...</p>
<p>Ich habe ...<br />
... keine Default-Parameter<br />
... die Vererbung hoffentlich richtig<br />
... es auch schon ohne Pointer ohne Erfolg versucht<br />
... keine Ahnung warum es nicht geht</p>
<p>Nochmals danke für die Hilfe und die Antworten (besonders <strong>Tachyon</strong>), ich werde mir den Code morgen nochmal in ruhe ansehen, evtl. hab ich an andrer Stelle n kleinen Fehler ...</p>
<p>... schönen Abend noch ...</p>
<p>Gruß Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705406</guid><dc:creator><![CDATA[varginator]]></dc:creator><pubDate>Mon, 04 May 2009 15:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei Aufruf einer geerbten Funktion on Mon, 04 May 2009 15:13:07 GMT]]></title><description><![CDATA[<p>class TILE : protected SIZE</p>
<p>dann sind ja die get_xxx funktionen in title protected. die kannst du also von object aus garnicht erreichen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705411</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Mon, 04 May 2009 15:13:07 GMT</pubDate></item></channel></rss>