<?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[Member-Funktionsaufruf mit boost bind]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne etwas in boost bind einarbeiten.<br />
Dazu möchte ich für alle Elemente in einem Vektor eine bestimmte Member-Funktion aufrufen. Dazu möchte ich eine Kombination aus for_each und bind haben.</p>
<p>Ich verdeutliche es mal so:</p>
<pre><code class="language-cpp">std::for_each(myList.begin(), myList.end(), myListEntry.foo());
</code></pre>
<p>Also die Klasse in meiner Liste hat eine Member-Funktion foo();</p>
<p>Allerdings weiß ich nicht wie ich von bar(Foo*) zu foo-&gt;foo() komme.<br />
Genau dafür suche ich nach einer Lösung Mithilfe von boost.</p>
<p>Vielen Dank für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284753/member-funktionsaufruf-mit-boost-bind</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 18:24:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284753.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Apr 2011 10:22:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 10:22:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich würde gerne etwas in boost bind einarbeiten.<br />
Dazu möchte ich für alle Elemente in einem Vektor eine bestimmte Member-Funktion aufrufen. Dazu möchte ich eine Kombination aus for_each und bind haben.</p>
<p>Ich verdeutliche es mal so:</p>
<pre><code class="language-cpp">std::for_each(myList.begin(), myList.end(), myListEntry.foo());
</code></pre>
<p>Also die Klasse in meiner Liste hat eine Member-Funktion foo();</p>
<p>Allerdings weiß ich nicht wie ich von bar(Foo*) zu foo-&gt;foo() komme.<br />
Genau dafür suche ich nach einer Lösung Mithilfe von boost.</p>
<p>Vielen Dank für eure Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045906</guid><dc:creator><![CDATA[boost-Neuling]]></dc:creator><pubDate>Thu, 07 Apr 2011 10:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 11:02:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::for_each(myList.begin(), myList.end(), boost::bind(&amp;TypeOfMyListEntry::foo, &amp;myListEntry, _1));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045933</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 11:09:40 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::for_each(myList.begin(), myList.end(), boost::bind(&amp;TypeOfMyListEntry::foo, &amp;myListEntry, _1));
</code></pre>
</blockquote>
<p>Danke dir, aber du hast mich vermutlich falsch verstanden.<br />
myListEntry soll jeweils der Eintrag sein über den gerade iteriert wird.</p>
<p>So ruft man doch eine Member-Funktion mit einem Parameter auf immer dem gleichen Objekt auf, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045937</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045937</guid><dc:creator><![CDATA[boost-Neuling]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:09:40 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 11:24:33 GMT]]></title><description><![CDATA[<p>boost-Neuling schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::for_each(myList.begin(), myList.end(), myListEntry.foo());
</code></pre>
</blockquote>
<pre><code class="language-cpp">for_each(myList.begin(), myList.end(), bind(&amp;DeineKlasse::foo,_1) );
</code></pre>
<p>(ungetestet)</p>
<p>könnte man glaub'ich auch mit boost::mem_fn machen, weil ja nicht wirklich irgend etwas gebunden wird:</p>
<pre><code class="language-cpp">for_each(myList.begin(), myList.end(), mem_fn(&amp;DeineKlasse::foo) );
</code></pre>
<p>(ungetestet)</p>
<p>in reinem Standard C++ (ohne Boost) müsste auch das hier gehen:</p>
<pre><code class="language-cpp">for_each(myList.begin(), myList.end(), std::mem_fun_ref(&amp;DeineKlasse::foo) );
</code></pre>
<p>(ungetestet)</p>
<p>siehe Boost/StdLib Doku</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045941</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 11:33:45 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for_each(myList.begin(), myList.end(), bind(&amp;DeineKlasse::foo,_1) );
</code></pre>
</blockquote>
<p>Danke!</p>
<p>Perfekt! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;boost/bind/bind.hpp&gt;

class Foo{
public:
        void foo(){
                std::cout &lt;&lt; &quot;foo()&quot; &lt;&lt; std::endl;
        }
};

int main(){
        std::vector&lt;Foo*&gt; vector;
        vector.push_back(new Foo());
        vector.push_back(new Foo());
        std::for_each(vector.begin(), vector.end(), boost::bind(&amp;Foo::foo, _1));
}
</code></pre>
<blockquote>
<p>foo()<br />
foo()</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2045946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045946</guid><dc:creator><![CDATA[boost-Neuling]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 11:40:49 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for_each(myList.begin(), myList.end(), mem_fn(&amp;DeineKlasse::foo) );
</code></pre>
</blockquote>
<p>Funktioniert ebenfalls!</p>
<blockquote>
<pre><code class="language-cpp">for_each(myList.begin(), myList.end(), std::mem_fun_ref(&amp;DeineKlasse::foo) );
</code></pre>
</blockquote>
<p>Funktioniert falls keine Zeiger im Vektor sind, sonst std::mem_fun<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045951</guid><dc:creator><![CDATA[boost-Neuling]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:40:49 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 11:44:03 GMT]]></title><description><![CDATA[<p>Welche der Varianten bevorzugt ihr denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045954</guid><dc:creator><![CDATA[boost-Neuling]]></dc:creator><pubDate>Thu, 07 Apr 2011 11:44:03 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 12:16:18 GMT]]></title><description><![CDATA[<p>boost-Neuling schrieb:</p>
<blockquote>
<p>Welche der Varianten bevorzugt ihr denn?</p>
</blockquote>
<p>Da Du boost benutzt:</p>
<pre><code class="language-cpp">BOOST_FOREACH(DeineKlasse &amp; obj, myList)
{
   obj.foo();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2045979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045979</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 07 Apr 2011 12:16:18 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 12:24:37 GMT]]></title><description><![CDATA[<p>Ich benutze bind (in Verbindung mit Elementfunktionen) oder mem_fn, mem_fun, mem_fun_ref so gut wie gar nicht. Ich weiß spontan auch nicht, was mem_fn jetzt besser macht gegenüber bind. Per bind kann man eben zusätzlich noch einige Parameter &quot;dranbinden&quot;, ist also in der Hinsicht flexibler als mem_fn. Die alten mem_fun/mem_fun_ref Funktionen sind weniger zu gebrauchen, weil sie mit Referenzparameter nicht ganz klarkommen (soweit ich weiß) und auch keine schlauen Zeiger zulassen. Die Boost-Varianten funktionieren nämlich auch, wenn Dein Vector zB shared_ptr&lt;DeineKlasse&gt;-Objekte speichert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2045986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2045986</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 07 Apr 2011 12:24:37 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 13:16:17 GMT]]></title><description><![CDATA[<p>Ich glaube ich bevorzuge GCC 4.6 mit C++0x und Range-based for <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046025</guid><dc:creator><![CDATA[boost-Neuling]]></dc:creator><pubDate>Thu, 07 Apr 2011 13:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 13:17:33 GMT]]></title><description><![CDATA[<p>boost-Neuling schrieb:</p>
<blockquote>
<p>Ich glaube ich bevorzuge GCC 4.6 mit C++0x und Range-based for <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Meine Rede. Wäre der GCC für Mac nur verfügbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046029</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 07 Apr 2011 13:17:33 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 13:28:20 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>boost-Neuling schrieb:</p>
<blockquote>
<p>Ich glaube ich bevorzuge GCC 4.6 mit C++0x und Range-based for <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Meine Rede. Wäre der GCC für Mac nur verfügbar.</p>
</blockquote>
<p><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="😕"
    /> Also ich verwende GCC (4.6) für den Mac</p>
<p>Einfach MacPorts installieren:<br />
<a href="http://www.macports.org/" rel="nofollow">http://www.macports.org/</a></p>
<pre><code>sudo port install gcc46
</code></pre>
<p>Fertig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046033</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 07 Apr 2011 13:28:20 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 13:30:01 GMT]]></title><description><![CDATA[<p>Ich werde es versuchen, wenn das funktionieren sollte, heirate ich dich!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046038</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 07 Apr 2011 13:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Member-Funktionsaufruf mit boost bind on Thu, 07 Apr 2011 18:27:35 GMT]]></title><description><![CDATA[<p>Ich bekomme es einfach nicht hin, finde den richtigen Compilerpfad nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046141</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 07 Apr 2011 18:27:35 GMT</pubDate></item></channel></rss>