<?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[Frage zu Funktionsobjekt]]></title><description><![CDATA[<p>Hio <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>
<p>ich soll im rahmen einer übugn an der uni mehrere Funktionsobjekte zu bereits vorgefertigtem code schreiben. leider kompiliert das ganze nicht und ich seh keine Fehler8aufbau entspricht dem der Beispielprogramme aus der Vorlesung):</p>
<p>Die klasse zum Funktionsobjekt:<br />
[code=&quot;cpp&quot;class rabbat_erhoehen : public binary_function&lt;Kunde&amp; ,float , void&gt;{<br />
public:<br />
void operator()(Kunde&amp; a,float r){<br />
a.set_rabbat(r);<br />
}<br />
};[/code]</p>
<p>der aufruf ( war schon vorgefertigt und soll nicht geändert werden)</p>
<pre><code>for_each(kunden.begin(), kunden.end(), bind2nd(rabbat_erhoehen(),1.5));
</code></pre>
<p>der Fehler von VS2012:</p>
<pre><code>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xfunctional(328): error C2535: 'void std::binder2nd&lt;_Fn2&gt;::operator ()(Kunde &amp;) const': Memberfunktion bereits definiert oder deklariert
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
1&gt;          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xfunctional(322): Siehe Deklaration von 'std::binder2nd&lt;_Fn2&gt;::operator ()'
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
1&gt;          g:\dropbox\programmieren\oop\blatt12\a41\kunden.cpp(107): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::binder2nd&lt;_Fn2&gt;&quot;.
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
</code></pre>
<p>vermutlich was ganz einfaches und doofes, aber zaunt mir doch mal mitm winkfahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312892/frage-zu-funktionsobjekt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 12:45:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312892.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jan 2013 16:36:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 16:36:04 GMT]]></title><description><![CDATA[<p>Hio <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>
<p>ich soll im rahmen einer übugn an der uni mehrere Funktionsobjekte zu bereits vorgefertigtem code schreiben. leider kompiliert das ganze nicht und ich seh keine Fehler8aufbau entspricht dem der Beispielprogramme aus der Vorlesung):</p>
<p>Die klasse zum Funktionsobjekt:<br />
[code=&quot;cpp&quot;class rabbat_erhoehen : public binary_function&lt;Kunde&amp; ,float , void&gt;{<br />
public:<br />
void operator()(Kunde&amp; a,float r){<br />
a.set_rabbat(r);<br />
}<br />
};[/code]</p>
<p>der aufruf ( war schon vorgefertigt und soll nicht geändert werden)</p>
<pre><code>for_each(kunden.begin(), kunden.end(), bind2nd(rabbat_erhoehen(),1.5));
</code></pre>
<p>der Fehler von VS2012:</p>
<pre><code>c:\program files (x86)\microsoft visual studio 11.0\vc\include\xfunctional(328): error C2535: 'void std::binder2nd&lt;_Fn2&gt;::operator ()(Kunde &amp;) const': Memberfunktion bereits definiert oder deklariert
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
1&gt;          c:\program files (x86)\microsoft visual studio 11.0\vc\include\xfunctional(322): Siehe Deklaration von 'std::binder2nd&lt;_Fn2&gt;::operator ()'
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
1&gt;          g:\dropbox\programmieren\oop\blatt12\a41\kunden.cpp(107): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;std::binder2nd&lt;_Fn2&gt;&quot;.
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
</code></pre>
<p>vermutlich was ganz einfaches und doofes, aber zaunt mir doch mal mitm winkfahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290339</guid><dc:creator><![CDATA[Daepilin]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 16:38:45 GMT]]></title><description><![CDATA[<p>ups, habs irgendwie zerschossen, hier nochmal mein code:</p>
<pre><code>class rabbat_erhoehen : public binary_function&lt;Kunde&amp; ,float , void&gt;{
public:
	void operator()(Kunde&amp; a,float r){
		a.set_rabbat(r);
	}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2290343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290343</guid><dc:creator><![CDATA[Daepilin]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 16:56:05 GMT]]></title><description><![CDATA[<p>Was sollst du nun machen? Ein zu <code>for_each(kunden.begin(), kunden.end(), bind2nd(rabbat_erhoehen(),1.5));</code> passendes <code>rabatt_erhoehen</code> schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290358</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 16:59:40 GMT]]></title><description><![CDATA[<p>jo, richtig. dachte das geht daraus hervor, sorry.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290359</guid><dc:creator><![CDATA[Daepilin]]></dc:creator><pubDate>Wed, 16 Jan 2013 16:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 17:01:14 GMT]]></title><description><![CDATA[<p>Und wie sieht dein fehlerhafter Versuch aus, auf den sich deine Fehlermeldung bezieht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290361</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jan 2013 17:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 17:25:22 GMT]]></title><description><![CDATA[<p>steht doch im zweiten beitrag?</p>
<p>habs im ersten versaut und den unangemeldet abgeschickt, kann also auch nich bearbeiten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290365</guid><dc:creator><![CDATA[Daepilin]]></dc:creator><pubDate>Wed, 16 Jan 2013 17:25:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 17:31:50 GMT]]></title><description><![CDATA[<p>Daepilin schrieb:</p>
<blockquote>
<p>ups, habs irgendwie zerschossen, hier nochmal mein code:</p>
<pre><code>class rabbat_erhoehen : public binary_function&lt;Kunde&amp; ,float , void&gt;{
public:
	void operator()(Kunde&amp; a,float r){
		a.set_rabbat(r);
	}
};
</code></pre>
</blockquote>
<p>Wenn ich mir eine Referenz zu <code>binder2nd</code> ansehe:</p>
<pre><code class="language-cpp">template &lt;class Fn&gt;
class binder2nd
  : public unary_function&lt;typename Fn::first_argument_type,
			  typename Fn::result_type&gt; {
protected:
  Fn op;
  typename Fn::second_argument_type value;
public:
  binder2nd(const Fn&amp; x,
	    const typename Fn::second_argument_type&amp; y);
  typename Fn::result_type
  operator()(const typename Fn::first_argument_type&amp; x) const;
  typename Fn::result_type
  operator()(typename Fn::first_argument_type&amp; x) const;
};

template &lt;class Fn, class T&gt;
binder2nd&lt;Fn&gt; bind2nd(const Fn&amp; op, const T&amp; x);
</code></pre>
<p>Ist <code>argument_type</code> der Typ ohne Referenz o.ä. und der <code>operator()</code> ist const qualifiziert.<br />
also:</p>
<pre><code class="language-cpp">class rabbat_erhoehen : public std::binary_function&lt;Kunde ,float , void&gt;{
public:
  void operator() (Kunde&amp; a,float r) const {
    a.set_rabbat(r);
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2290370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290370</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 16 Jan 2013 17:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 17:45:26 GMT]]></title><description><![CDATA[<p>gibt ebenso fehler...</p>
<pre><code>1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\algorithm(24): error C2664: 'void std::binder2nd&lt;_Fn2&gt;::operator ()(Kunde &amp;) const': 
Konvertierung des Parameters 1 von 'Kunde *' in 'Kunde &amp;' nicht möglich
1&gt;          with
1&gt;          [
1&gt;              _Fn2=rabbat_erhoehen
1&gt;          ]
1&gt;          c:\program files (x86)\microsoft visual studio 11.0\vc\include\algorithm(33): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template 
&quot;void std::_For_each&lt;Kunde**,_Fn1&gt;(_InIt,_InIt,_Fn1 &amp;)&quot;.
1&gt;          with
1&gt;          [
1&gt;              _Fn1=std::binder2nd&lt;rabbat_erhoehen&gt;,
1&gt;              _InIt=Kunde **
1&gt;          ]
1&gt;          g:\dropbox\programmieren\oop\blatt12\a41\kunden.cpp(107): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template 
&quot;_Fn1 std::for_each&lt;std::_Vector_iterator&lt;_Myvec&gt;,std::binder2nd&lt;_Fn2&gt;&gt;(_InIt,_InIt,_Fn1)&quot;.
1&gt;          with
1&gt;          [
1&gt;              _Fn1=std::binder2nd&lt;rabbat_erhoehen&gt;,
1&gt;              _Myvec=std::_Vector_val&lt;std::_Simple_types&lt;Kunde *&gt;&gt;,
1&gt;              _Fn2=rabbat_erhoehen,
1&gt;              _InIt=std::_Vector_iterator&lt;std::_Vector_val&lt;std::_Simple_types&lt;Kunde *&gt;&gt;&gt;
1&gt;          ]
========== Alles neu e
</code></pre>
<p>btw, die wichtigen zeilen aus der kunden klasse noch:</p>
<pre><code>class Kunde {
  private:
    float rabbat;
 public:
    void set_rabbat(float r) { rabbat = r; }
</code></pre>
<p>da is auch außer get und set funktionen, sowie nem konstruktor und nem operator&lt;&lt; nichts definiert drinne.</p>
<p>habs auch direkt mit pointern (und dann eben a-&gt;set_rabbat(r); ) probiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290372</guid><dc:creator><![CDATA[Daepilin]]></dc:creator><pubDate>Wed, 16 Jan 2013 17:45:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 17:44:44 GMT]]></title><description><![CDATA[<p>Daepilin schrieb:</p>
<blockquote>
<p>gibt ebenso fehler...</p>
<pre><code>1&gt;c:\program files (x86)\microsoft visual studio 11.0\vc\include\algorithm(24):
error C2664: 'void std::binder2nd&lt;_Fn2&gt;::operator ()(Kunde &amp;) const':
Konvertierung des Parameters 1 von 'Kunde *' in 'Kunde &amp;' nicht möglich
1
</code></pre>
</blockquote>
<p>Mit einem Container von <code>Kunde*</code> wird das auch nix...<br />
Ist das auch vorgegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290376</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Wed, 16 Jan 2013 17:44:44 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 17:50:16 GMT]]></title><description><![CDATA[<p>seh ich grad erst, jo, ist es oO dann muss ich da nochmal drüberschaun, hab ich garnet gesehn *sry*, jetzt gehts, doof, dass ich das nich selbst bemerkt habe -.-</p>
<p>aber gut, ich hätte das const trotzdem vergessen/übersehn, whatever....</p>
<p>e: geht btw... bzw kompiliert zumindest...</p>
<p>kann den thread wer löschen, is ja fast peinlich <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290377</guid><dc:creator><![CDATA[Daepilin]]></dc:creator><pubDate>Wed, 16 Jan 2013 17:50:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Funktionsobjekt on Wed, 16 Jan 2013 18:24:21 GMT]]></title><description><![CDATA[<p>Daepilin schrieb:</p>
<blockquote>
<p>kann den thread wer löschen, is ja fast peinlich <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=":/"
      alt="😕"
    /></p>
</blockquote>
<p>Die anderen Fehler mit dem fehlenden const und der Referenz sind aber durchaus Fehler auf hohem Niveau, die auch andere Leute interessieren könnten. Ich wette, viele hier im Forum müssten mit dem vorgegebenen Code auch erst einmal eine ganze Weile basteln, bis sie diese Fehler finden und korrigieren können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2290387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2290387</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 16 Jan 2013 18:24:21 GMT</pubDate></item></channel></rss>