<?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[Funktionszeiger]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>kann mir jemand sagen, warum beim folgenden Code der Fehler &quot;reference to plus is ambiguous&quot; erscheint? Irgendwie steh ich aufm Schlauch.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void (*foo)(int&amp;);

void plus(int&amp; x) {
	x++;
}

void minus(int&amp; x) {
	x--;
}

int main() {

	int a = 10;
	foo = plus;
	foo(a);
	cout &lt;&lt; a &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Vielen Dank<br />
LG, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311809/funktionszeiger</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 11:30:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311809.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Dec 2012 11:54:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 11:54:14 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>kann mir jemand sagen, warum beim folgenden Code der Fehler &quot;reference to plus is ambiguous&quot; erscheint? Irgendwie steh ich aufm Schlauch.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void (*foo)(int&amp;);

void plus(int&amp; x) {
	x++;
}

void minus(int&amp; x) {
	x--;
}

int main() {

	int a = 10;
	foo = plus;
	foo(a);
	cout &lt;&lt; a &lt;&lt; endl;

	return 0;
}
</code></pre>
<p>Vielen Dank<br />
LG, freakC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280304</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Sat, 15 Dec 2012 11:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 11:59:18 GMT]]></title><description><![CDATA[<p>Mach das <code>using namespace std;</code> weg, das ist nie eine gute Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280306</guid><dc:creator><![CDATA[amisches]]></dc:creator><pubDate>Sat, 15 Dec 2012 11:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 12:04:22 GMT]]></title><description><![CDATA[<p>Tatsächlich! Daran lag es. Was hat den std damit zu tun? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>edit: Kann mir noch jemand erklären, wie man den Parameter dieser Funktion zu intepretieren hat?</p>
<pre><code class="language-cpp">float (*e)(float (const int&amp;));
</code></pre>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280307</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Sat, 15 Dec 2012 12:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 12:09:12 GMT]]></title><description><![CDATA[<p>im std Namensraum gibt es eine struct die &quot;plus&quot; heißt, deswegen weiß der Compiler nicht, was du meinst<br />
Der Parameter ist selbst wieder eine Funktion, die einen const int&amp; nimmt und float zurückgibt.</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280309</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Sat, 15 Dec 2012 12:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 12:47:18 GMT]]></title><description><![CDATA[<p>Ok, danke! Noch eine letzte Frage. Wie ist die Aufrufkonvention einer solcher Funktion. So, kommt nämlich ein Castingfehler:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

float (*e)(float (const int&amp;));

float plus(const int&amp; x) {
	return 1 + x;
}

float foo(float x(const int&amp;)) {
	return 1 + x(1);
}

int main() {

	float a = 10.0;
	e = foo;
	std::cout &lt;&lt; e(plus(a)) &lt;&lt; std::endl; //Fehler!

	return 0;
}
</code></pre>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280313</guid><dc:creator><![CDATA[freakC++]]></dc:creator><pubDate>Sat, 15 Dec 2012 12:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 12:53:46 GMT]]></title><description><![CDATA[<p>Pass mit den Fachwörtern auf:<br />
Aufrufkonvention (calling convention): bedeutet etwas anderes<br />
Castingfehler: Du verwendest keinen Cast, das ist wenn schon ein Typfehler.</p>
<p>Was denkst du denn, was</p>
<pre><code class="language-cpp">plus(a)
</code></pre>
<p>für einen Typ hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280316</guid><dc:creator><![CDATA[amisches]]></dc:creator><pubDate>Sat, 15 Dec 2012 12:53:46 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 12:59:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

float plus( const int &amp; x )
{
    return 1 + x;
}

typedef float ( *plus_t )( const int &amp; );

float foo( plus_t x, float a )
{
    return 1 + x( a );
}

typedef float ( *foo_t )( plus_t, float );

int main()
{ 
    float a = 10.0f;
    foo_t e = foo;

    std::cout &lt;&lt; e( plus, a ) &lt;&lt; '\n';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2280319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280319</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 15 Dec 2012 12:59:14 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger on Sat, 15 Dec 2012 14:09:13 GMT]]></title><description><![CDATA[<p>freakC++ schrieb:</p>
<blockquote>
<p>edit: Kann mir noch jemand erklären, wie man den Parameter dieser Funktion zu intepretieren hat?</p>
<pre><code class="language-cpp">float (*e)(float (const int&amp;));
</code></pre>
</blockquote>
<p>Der Parameter dieser Funktion ist ein Funktionszeiger auf eine Funktion die</p>
<ul>
<li>einen <code>float</code> zurückgibt</li>
<li>und eine Const-Referenz auf einen <code>int</code> als Parameter nimmt.</li>
</ul>
<p><strong>Edit³:</strong><br />
Vielleicht wird es deutlicher wenn du den Funktionsparameter mal aus der Definition rausnimmst:</p>
<pre><code>float (const int&amp;)
</code></pre>
<p>Dann ist es nur noch eine leicht zu lesene Signatur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280333</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 15 Dec 2012 14:09:13 GMT</pubDate></item></channel></rss>