<?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 mit Funktionsobjekten]]></title><description><![CDATA[<p>Hi,</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;list&gt;
#include &lt;algorithm&gt;
using namespace std;

void myprint(int i, int val) {
    if (val &gt; i)
        cout &lt;&lt; val &lt;&lt; endl;
}

int main() {
    list&lt;int&gt; li;
    for (int i = 0; i &lt; 10; i++)
        li.push_back(i);

    // Hier soll für jedes Element aus li
    // die Funktion myprint() mit 5 als ersten Parameter aufgerufen werden
    for_each(li.begin(), li.end(), &amp;myprint(5))
};
</code></pre>
<p>Wie gehts wirklich?</p>
<p>Ich will eigentlich keine tausend Funktionen definieren, die alle <code>myprint1()</code> , <code>myprint2()</code> , usw heißen...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237493/problem-mit-funktionsobjekten</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 06:09:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237493.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 29 Mar 2009 18:07:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 18:07:32 GMT]]></title><description><![CDATA[<p>Hi,</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;list&gt;
#include &lt;algorithm&gt;
using namespace std;

void myprint(int i, int val) {
    if (val &gt; i)
        cout &lt;&lt; val &lt;&lt; endl;
}

int main() {
    list&lt;int&gt; li;
    for (int i = 0; i &lt; 10; i++)
        li.push_back(i);

    // Hier soll für jedes Element aus li
    // die Funktion myprint() mit 5 als ersten Parameter aufgerufen werden
    for_each(li.begin(), li.end(), &amp;myprint(5))
};
</code></pre>
<p>Wie gehts wirklich?</p>
<p>Ich will eigentlich keine tausend Funktionen definieren, die alle <code>myprint1()</code> , <code>myprint2()</code> , usw heißen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1687900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687900</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 29 Mar 2009 18:07:32 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 18:14:23 GMT]]></title><description><![CDATA[<p>Funktionen bieten dafür zu wenig Flexibilität. Hier sind Funktionsobjekte (Funktoren) angebracht. Das sind Klassen, die den <code>operator()</code> überladen. Als Konstruktorargumente können sie zusätzliche Bedingungen nehmen.</p>
<p>Der Funktor könnte zum Beispiel so aussehen:</p>
<pre><code class="language-cpp">struct PrintFunctor
{ 
	PrintFunctor(int Limit)
	: MyLimit(Limit)
	{
	}

	void operator() (int Value)
	{
		if (Value &gt; MyLimit)
			std::cout &lt;&lt; Value &lt;&lt; std::endl; 
	}

	int MyLimit;
};
</code></pre>
<p>Und in der Anwendung:</p>
<pre><code class="language-cpp">std::for_each(List.begin(), List.end(), PrintFunctor(5));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1687905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687905</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Mar 2009 18:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 18:15:24 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/std/functional/bind1st.html" rel="nofollow">http://www.cplusplus.com/reference/std/functional/bind1st.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1687906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687906</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 29 Mar 2009 18:15:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 18:15:57 GMT]]></title><description><![CDATA[<p>super danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1687907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687907</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 29 Mar 2009 18:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 18:20:30 GMT]]></title><description><![CDATA[<p>zu spät</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1687910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687910</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 29 Mar 2009 18:20:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 19:02:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;functional&gt;
using namespace std;

void printif(int greater, int val) {
	if (greater &gt; val)
		cout &lt;&lt; val &lt;&lt; &quot; &quot;;
}

int main () {
	list&lt;int&gt; li;
	for (unsigned int i = 0; i &lt; 10; i++)
		li.push_back(i);

	std::for_each(li.begin(), li.end(), bind1st(printif(), 5));
}
</code></pre>
<p>Ausgabe:</p>
<p><code>Fehler	1	error C2660: 'printif': Funktion akzeptiert keine 0 Argumente	c:\test\test\base.cpp	17</code></p>
<p>was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1687941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687941</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 29 Mar 2009 19:02:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 19:07:58 GMT]]></title><description><![CDATA[<p>Du musst die Funktion selber übergeben, und nicht aufrufen. Also die Klammern weglassen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1687942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687942</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 29 Mar 2009 19:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sun, 29 Mar 2009 19:10:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;functional&gt;
using namespace std;

void printif(int greater, int val) {
	if (greater &gt; val)
		cout &lt;&lt; val &lt;&lt; &quot; &quot;;
}

int main () {
	list&lt;int&gt; li;
	for (unsigned int i = 0; i &lt; 10; i++)
		li.push_back(i);

	std::for_each(li.begin(), li.end(), bind1st(printif, 5));
}
</code></pre>
<pre><code>Fehler	1	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	261
Fehler	2	error C2039: 'second_argument_type': Ist kein Element von '`global namespace''	c:\program files\microsoft visual studio 8\vc\include\functional	261
Fehler	3	error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'second_argument_type'	c:\program files\microsoft visual studio 8\vc\include\functional	261
Fehler	4	error C2065: 'second_argument_type': nichtdeklarierter Bezeichner	c:\program files\microsoft visual studio 8\vc\include\functional	261
Fehler	5	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	262
Fehler	6	error C2039: 'result_type': Ist kein Element von '`global namespace''	c:\program files\microsoft visual studio 8\vc\include\functional	262
Fehler	7	error C2146: Syntaxfehler: Fehlendes ',' vor Bezeichner 'result_type'	c:\program files\microsoft visual studio 8\vc\include\functional	262
Fehler	8	error C2065: 'result_type': nichtdeklarierter Bezeichner	c:\program files\microsoft visual studio 8\vc\include\functional	262
Fehler	9	error C2955: &quot;std::unary_function&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.	c:\program files\microsoft visual studio 8\vc\include\functional	263
Fehler	10	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	265
Fehler	11	error C2143: Syntaxfehler: Es fehlt ',' vor '`global namespace'::second_argument_type'	c:\program files\microsoft visual studio 8\vc\include\functional	265
Fehler	12	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	266
Fehler	13	error C2143: Syntaxfehler: Es fehlt ',' vor '`global namespace'::result_type'	c:\program files\microsoft visual studio 8\vc\include\functional	266
Fehler	14	error C2955: &quot;std::unary_function&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.	c:\program files\microsoft visual studio 8\vc\include\functional	267
Fehler	15	error C2955: &quot;std::unary_function&quot;: Für die Verwendung der template-Klasse ist eine template-Argumentliste erforderlich.	c:\program files\microsoft visual studio 8\vc\include\functional	268
Fehler	16	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	270
Fehler	17	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	270
Fehler	18	error C2039: 'first_argument_type': Ist kein Element von '`global namespace''	c:\program files\microsoft visual studio 8\vc\include\functional	270
Fehler	19	error C2143: Syntaxfehler: Es fehlt ',' vor '&amp;'	c:\program files\microsoft visual studio 8\vc\include\functional	270
Fehler	20	error C2825: &quot;_Fn2&quot;: Muss eine Klasse oder ein Namespace sein, wenn gefolgt von &quot;::&quot;.	c:\program files\microsoft visual studio 8\vc\include\functional	288
Fehler	21	error C2039: 'first_argument_type': Ist kein Element von '`global namespace''	c:\program files\microsoft visual studio 8\vc\include\functional	288
Fehler	22	error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'value'	c:\program files\microsoft visual studio 8\vc\include\functional	288
Fehler	23	error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.	c:\program files\microsoft visual studio 8\vc\include\functional	288
Fehler	24	error C2664: 'std::for_each': Konvertierung des Parameters 3 von 'std::binder1st&lt;_Fn2&gt;' in 'std::binder1st&lt;_Fn2&gt;' nicht möglich	c:\test\test\base.cpp	17
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1687947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1687947</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 29 Mar 2009 19:10:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Funktionsobjekten on Sat, 04 Apr 2009 12:42:17 GMT]]></title><description><![CDATA[<p>Bei Funktionen musst du einen Umweg über ptr_fun machen:</p>
<pre><code class="language-cpp">std::for_each(li.begin(), li.end(), bind2nd (ptr_fun (&amp;printif),5) );
</code></pre>
<p>bind2nd braucht noch Informationen über die Typen, welche bei einer Funktion natürlich nicht ohne weiteres extrahiert werden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1690838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1690838</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 04 Apr 2009 12:42:17 GMT</pubDate></item></channel></rss>