<?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[Callback mit Memberfunktionen einer Instanz]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe derzeit ein Vorhaben, in dem ich gerne Callback für Memberfunktionen einbauen würde.<br />
Das ganze funktioniert momentan über statische Funktionen:</p>
<pre><code class="language-cpp">typedef void (*Callback)(const char*);

void TestCallback(const char *sName)
{
	cout &lt;&lt; sName &lt;&lt; endl;
}
</code></pre>
<p>Das ganze klappt auch wunderbar. Ich übergebe meiner Funktion, die irgendwann einen Callback absetzen soll die Funktion so:</p>
<pre><code class="language-cpp">MeineFunktion(&quot;bla&quot;, TestCallback);

// Der Prototype:
void MeineFunktion(const char *sName, Callback cCallback);

// Aufruf:
cCallback(sName);
</code></pre>
<p>Ich wollte das ganze jetzt aber gerne für Memberfunktionen einrichten, die eine Instanz besitzen. Die &quot;MeineFunktion&quot;-Funktion rufe ich aus dem Konstruktor der Klasse auf. Also würde ich das gerne so machen:</p>
<pre><code class="language-cpp">cKlasse::cKlasse(void)
{
    MeineFunktion(&quot;bla&quot;, this-&gt;TestCallback);
}
</code></pre>
<p>Aber das funktioniert anscheinend nicht so einfach, wie ich mir das vorgestellt habe. Gibt es eine Möglichkeit, dass doch zu bewerkstelligen?</p>
<p>Danke!<br />
~ Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236963/callback-mit-memberfunktionen-einer-instanz</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 13:58:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236963.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Mar 2009 14:06:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Callback mit Memberfunktionen einer Instanz on Sun, 22 Mar 2009 14:06:09 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe derzeit ein Vorhaben, in dem ich gerne Callback für Memberfunktionen einbauen würde.<br />
Das ganze funktioniert momentan über statische Funktionen:</p>
<pre><code class="language-cpp">typedef void (*Callback)(const char*);

void TestCallback(const char *sName)
{
	cout &lt;&lt; sName &lt;&lt; endl;
}
</code></pre>
<p>Das ganze klappt auch wunderbar. Ich übergebe meiner Funktion, die irgendwann einen Callback absetzen soll die Funktion so:</p>
<pre><code class="language-cpp">MeineFunktion(&quot;bla&quot;, TestCallback);

// Der Prototype:
void MeineFunktion(const char *sName, Callback cCallback);

// Aufruf:
cCallback(sName);
</code></pre>
<p>Ich wollte das ganze jetzt aber gerne für Memberfunktionen einrichten, die eine Instanz besitzen. Die &quot;MeineFunktion&quot;-Funktion rufe ich aus dem Konstruktor der Klasse auf. Also würde ich das gerne so machen:</p>
<pre><code class="language-cpp">cKlasse::cKlasse(void)
{
    MeineFunktion(&quot;bla&quot;, this-&gt;TestCallback);
}
</code></pre>
<p>Aber das funktioniert anscheinend nicht so einfach, wie ich mir das vorgestellt habe. Gibt es eine Möglichkeit, dass doch zu bewerkstelligen?</p>
<p>Danke!<br />
~ Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684285</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 22 Mar 2009 14:06:09 GMT</pubDate></item><item><title><![CDATA[Reply to Callback mit Memberfunktionen einer Instanz on Sun, 22 Mar 2009 14:13:16 GMT]]></title><description><![CDATA[<p>FAQ:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39450.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39450.html</a></p>
<p>Für allgemeine Callbacks gibt es Möglichkeiten von Boost:<br />
<a href="http://www.boost.org/doc/libs/1_38_0/doc/html/function.html" rel="nofollow">http://www.boost.org/doc/libs/1_38_0/doc/html/function.html</a><br />
<a href="http://www.boost.org/doc/libs/1_38_0/libs/bind/bind.html" rel="nofollow">http://www.boost.org/doc/libs/1_38_0/libs/bind/bind.html</a></p>
<p>Ist glaub ich auch im TR1 enthalten:<br />
`std::tr1::function</p>
<p>std::tr1::bind`</p>
<p>Und wird ganz sicher in C++0x enthalten sein.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684287</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 22 Mar 2009 14:13:16 GMT</pubDate></item><item><title><![CDATA[Reply to Callback mit Memberfunktionen einer Instanz on Sun, 22 Mar 2009 14:13:56 GMT]]></title><description><![CDATA[<p>Hier gibts was zu lesen:<br />
<a href="http://www.parashift.com/c++-faq-lite/pointers-to-members.html" rel="nofollow">http://www.parashift.com/c++-faq-lite/pointers-to-members.html</a><br />
<a href="http://www.codeproject.com/KB/cpp/FastDelegate.aspx" rel="nofollow">http://www.codeproject.com/KB/cpp/FastDelegate.aspx</a></p>
<p>Ausserdem hilft dir ev. die TR1 implementierung von MS (Header <strong>functional</strong>):<br />
<a href="http://msdn.microsoft.com/en-us/library/bb982124.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/bb982124.aspx</a></p>
<p>Oder die Boost Impl. der <strong>function</strong> und <strong>bind</strong> Helfer:<br />
<a href="http://www.boost.org/doc/libs/1_38_0/doc/html/function.html" rel="nofollow">http://www.boost.org/doc/libs/1_38_0/doc/html/function.html</a><br />
<a href="http://www.boost.org/doc/libs/1_38_0/libs/bind/bind.html" rel="nofollow">http://www.boost.org/doc/libs/1_38_0/libs/bind/bind.html</a></p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684289</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 22 Mar 2009 14:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Callback mit Memberfunktionen einer Instanz on Sun, 22 Mar 2009 14:34:34 GMT]]></title><description><![CDATA[<p>Hi.<br />
Danke mal für die vielen Links.<br />
Im Prinzip scheint es dann ja doch einfach, wäre nicht das Problem mit den mehreren verschiedenen Klassen, was diese einfache Lösung zunichte macht.<br />
Die Boost-Sache gefällt mir auch nicht so, wollte auf externe Header eigentlich verzichten.</p>
<p>Soweit ich das gesehen habe gibt es dann keine andere Möglichkeit mehr <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="😕"
    /><br />
Schade.</p>
<p>Danke trotzdem!<br />
~ Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684301</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 22 Mar 2009 14:34:34 GMT</pubDate></item><item><title><![CDATA[Reply to Callback mit Memberfunktionen einer Instanz on Sun, 22 Mar 2009 14:40:13 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Die Boost-Sache gefällt mir auch nicht so, wollte auf externe Header eigentlich verzichten.</p>
</blockquote>
<p>Boost kann man als Erweiterung der Standardbibliothek sehen und die Standardbibliothek verwendest du ja auch <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="😉"
    /><br />
Man kann ja auch statisch linken, dann musst du keine DLLs oder ähnliches weitergeben. Wobei ich jetzt nicht mal weiss, ob Boost.Bind und Boost.Function nicht nur aus Header Dateien bestehen. Dann musst du gar nichts zusätzliches dazulinken.</p>
<p>theliquidwave schrieb:</p>
<blockquote>
<p>Soweit ich das gesehen habe gibt es dann keine andere Möglichkeit mehr <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>Ehm, doch, die TR1 Möglichkeit. Viele der modernen Kompiler unterstützen heutzutage TR1.</p>
<p>Als letzte Alternative wäre auch noch, dass du die Sache selber implementierst. So viel arbeit ist es nicht wirklich. Aber wieso du überhaupt auf externe Header verzichten willst, ist mir ein wenig ein Rätsel.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684307</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 22 Mar 2009 14:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Callback mit Memberfunktionen einer Instanz on Sun, 22 Mar 2009 14:42:52 GMT]]></title><description><![CDATA[<p>Hi.<br />
Nichts spricht gegen externe Header. Nur ich bin noch nicht so lange in C++ dabei und kenne mich nicht deshalb nicht so damit aus, wie man sich mit so etwas auseinander setzt <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="😉"
    /><br />
Da ich MSVC++ benutze sollte die TR1-Methode wohl auch funktionieren, wenn dann werde ich diese benutzen. Muss mich aber erst einmal damit auseinandersetzen und ein paar Beispiele bei Google suchen.</p>
<p>Danke nochmals <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
~ Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684309</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Sun, 22 Mar 2009 14:42:52 GMT</pubDate></item></channel></rss>