<?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[merkwürdiger Compilerfehler bei verwendung von abstrakten klassen...]]></title><description><![CDATA[<p>kurz und bündig: WTH?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class IInterface
{
public:
	virtual void foo() = 0;
};

class ISubInterface : public IInterface
{
public:
	virtual void foo( int arg ) = 0;
};

class Class : public ISubInterface
{
public:
	virtual void foo()			{	std::cout &lt;&lt; &quot;foo()&quot; &lt;&lt; std::endl;			}
	virtual void foo( int arg )		{	std::cout &lt;&lt; &quot;foo(int arg)&quot; &lt;&lt; std::endl;	}
};

int main( int argc, char **argv )
{
	ISubInterface *i = new Class();

	i-&gt;foo();		// compilerfehler
	i-&gt;foo( 0 );

	delete i;

	return 0;
}
</code></pre>
<p>msvc 9.0 schrieb:</p>
<blockquote>
<p>error C2660: 'ISubInterface::foo' : function does not take 0 arguments</p>
</blockquote>
<p>meine welt wurde gerade in ihren grundfesten erschüttert. sollte das so sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/235797/merkwürdiger-compilerfehler-bei-verwendung-von-abstrakten-klassen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 05:28:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/235797.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Mar 2009 13:24:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to merkwürdiger Compilerfehler bei verwendung von abstrakten klassen... on Fri, 06 Mar 2009 13:26:46 GMT]]></title><description><![CDATA[<p>kurz und bündig: WTH?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class IInterface
{
public:
	virtual void foo() = 0;
};

class ISubInterface : public IInterface
{
public:
	virtual void foo( int arg ) = 0;
};

class Class : public ISubInterface
{
public:
	virtual void foo()			{	std::cout &lt;&lt; &quot;foo()&quot; &lt;&lt; std::endl;			}
	virtual void foo( int arg )		{	std::cout &lt;&lt; &quot;foo(int arg)&quot; &lt;&lt; std::endl;	}
};

int main( int argc, char **argv )
{
	ISubInterface *i = new Class();

	i-&gt;foo();		// compilerfehler
	i-&gt;foo( 0 );

	delete i;

	return 0;
}
</code></pre>
<p>msvc 9.0 schrieb:</p>
<blockquote>
<p>error C2660: 'ISubInterface::foo' : function does not take 0 arguments</p>
</blockquote>
<p>meine welt wurde gerade in ihren grundfesten erschüttert. sollte das so sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675254</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 06 Mar 2009 13:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiger Compilerfehler bei verwendung von abstrakten klassen... on Fri, 06 Mar 2009 13:28:50 GMT]]></title><description><![CDATA[<p>Wie soll denn eine Funktion aufgerufen werden, die in der Klasse nicht deklariert ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675258</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 06 Mar 2009 13:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiger Compilerfehler bei verwendung von abstrakten klassen... on Fri, 06 Mar 2009 13:35:02 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>,<br />
Er will das <code>void foo()</code> von <code>IInterface</code> aufrufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14118">@iko79</a>,<br />
Fiese Sache.<br />
Das void <code>foo( int arg )</code> aus <code>ISubInterface</code> überdeckt das <code>void foo()</code> von <code>IInterface</code> . Überladung geht nur im gleichen Scope. Eine Basisklasse hat einen anderen Scope.<br />
Ändere <code>ISubInterface</code> wie folgt ab:</p>
<pre><code class="language-cpp">class ISubInterface : public IInterface
{
public:
	using IInterface::foo;
	virtual void foo( int arg ) = 0;
};
</code></pre>
<p>So holst du das <code>void foo()</code> aus der Elternklasse in die Kindklasse. Die Überladung sollte nun funktionieren.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675264</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 06 Mar 2009 13:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiger Compilerfehler bei verwendung von abstrakten klassen... on Fri, 06 Mar 2009 13:40:23 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>,<br />
Er will das <code>void foo()</code> von <code>IInterface</code> aufrufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Argh! Zuerst dachte ich auch, das wäre ein Überdeckungsproblem, ich habe sogar schon den Post dazu geschrieben. Irgendwie hab ich beim erneuten Lesen das Problem an anderer Stelle gesehen und meinen Beitrag nochmals neu geschrieben... <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/1675273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675273</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 06 Mar 2009 13:40:23 GMT</pubDate></item><item><title><![CDATA[Reply to merkwürdiger Compilerfehler bei verwendung von abstrakten klassen... on Fri, 06 Mar 2009 14:07:59 GMT]]></title><description><![CDATA[<p>ohmann. c++ ist echt immer wieder für eine überraschung gut. danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1675299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1675299</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 06 Mar 2009 14:07:59 GMT</pubDate></item></channel></rss>