<?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[Boost.Function mit Boost.Bind]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine CALLBACK-Funktion mittels den im Threadtitel genannten libs gebaut. Nur provoziert irgendein mir unbekannter Fehler, dass die <em>vc90.pdb</em> nicht geupdatet werden kann. Im Release-Build sieht die Geschichte dennoch wieder ganz anders aus. Wie dem auch sei, nun der Code.</p>
<p>Es gibt 3 Klasse in einer hierarchischen Anordnung. Eine Hauptklasse, eine Unterklasse und eine Unterklasse von dieser Unterklasse.</p>
<p>Hauptklasse:</p>
<pre><code class="language-cpp">boost::bind
			(
				&amp;Network::AsyncTCPClient::StartTransfer
			)
</code></pre>
<p>1. Unterklasse:</p>
<pre><code class="language-cpp">void NetworkManager::CheckIfServerConnected
	     (
			const boost::function&lt;void (Network::AsyncTCPServer*)&gt; &amp;temp_CallbackStartTransfer
		 )
	{
		for(;;)
		{
			if(m_pClient-&gt;m_ConnectedToServer)
			{
				if(m_ReadyToPlay)
					temp_CallbackStartTransfer(m_pServer.get());
			}
		}
	}
</code></pre>
<p>2. Unterklasse, die die eigentliche zu call'ende-Funktion beinhaltet:</p>
<pre><code class="language-cpp">/// CALLBACK
			/// Starts transfer between client and server
			void StartTransfer()
			{
				Package002 package;

				SendData(package.m_pReadyToPlay, sizeof(package.m_pReadyToPlay));
			}
</code></pre>
<p>Ich stehe etwas auf dem Schlauch, deswegen würde ich mich über Hilfe freuen. Was habe ich falsch gemacht?</p>
<p>Ich danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272172/boost-function-mit-boost-bind</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 00:09:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272172.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Aug 2010 01:44:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost.Function mit Boost.Bind on Thu, 12 Aug 2010 01:44:28 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine CALLBACK-Funktion mittels den im Threadtitel genannten libs gebaut. Nur provoziert irgendein mir unbekannter Fehler, dass die <em>vc90.pdb</em> nicht geupdatet werden kann. Im Release-Build sieht die Geschichte dennoch wieder ganz anders aus. Wie dem auch sei, nun der Code.</p>
<p>Es gibt 3 Klasse in einer hierarchischen Anordnung. Eine Hauptklasse, eine Unterklasse und eine Unterklasse von dieser Unterklasse.</p>
<p>Hauptklasse:</p>
<pre><code class="language-cpp">boost::bind
			(
				&amp;Network::AsyncTCPClient::StartTransfer
			)
</code></pre>
<p>1. Unterklasse:</p>
<pre><code class="language-cpp">void NetworkManager::CheckIfServerConnected
	     (
			const boost::function&lt;void (Network::AsyncTCPServer*)&gt; &amp;temp_CallbackStartTransfer
		 )
	{
		for(;;)
		{
			if(m_pClient-&gt;m_ConnectedToServer)
			{
				if(m_ReadyToPlay)
					temp_CallbackStartTransfer(m_pServer.get());
			}
		}
	}
</code></pre>
<p>2. Unterklasse, die die eigentliche zu call'ende-Funktion beinhaltet:</p>
<pre><code class="language-cpp">/// CALLBACK
			/// Starts transfer between client and server
			void StartTransfer()
			{
				Package002 package;

				SendData(package.m_pReadyToPlay, sizeof(package.m_pReadyToPlay));
			}
</code></pre>
<p>Ich stehe etwas auf dem Schlauch, deswegen würde ich mich über Hilfe freuen. Was habe ich falsch gemacht?</p>
<p>Ich danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1938970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1938970</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 12 Aug 2010 01:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Function mit Boost.Bind on Thu, 12 Aug 2010 06:27:48 GMT]]></title><description><![CDATA[<p>Kóyaánasqatsi schrieb:</p>
<blockquote>
<p>[...]ich habe eine CALLBACK-Funktion mittels den im Threadtitel genannten libs gebaut. Nur provoziert irgendein mir unbekannter Fehler, dass die <em>vc90.pdb</em> nicht geupdatet werden kann[...]</p>
</blockquote>
<p>Probier mal, alles neu zu bauen. Im schlimmsten Fall die pdb von Hand löschen. Das ist ein Problem (Bug), das vor allem bei MSVS 2008 ohne SP1 vor kommt.<br />
Bei Deinem aufruf von <code>boost::bind</code> scheint außerdem das Objekt zu fehlen, für das Du binden willst. Es sei denn, die Funktion ist statisch, oder <code>Network</code> und <code>AsyncTCPClient</code> sind namespaces. Aber das ist im gezeigten Code nicht zu sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1938994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1938994</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 12 Aug 2010 06:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Function mit Boost.Bind on Thu, 12 Aug 2010 11:22:38 GMT]]></title><description><![CDATA[<p>Ich hatte den Fehler schon öfters, deswegen hatte ich alles schon ausprobiert. Auch vn Hand hatte ich es schon versucht zu löschen. Und nein, keine Funktion ist statisch. Aber welches Objekt meinst du beim bost::bind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939142</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 12 Aug 2010 11:22:38 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Function mit Boost.Bind on Thu, 12 Aug 2010 11:31:01 GMT]]></title><description><![CDATA[<p>&quot;Das Objekt&quot; (vom Typ Network::AsyncTCPServer*) ist der erste Parameter des Funktors. Damit musst Du bind allerdings auch sagen, dass Du einen Funktor mit einem Parameter erstellen willst.</p>
<pre><code class="language-cpp">bind( &amp;Network::AsyncTCPClient::StartTransfer, _1 )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1939147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939147</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 12 Aug 2010 11:31:01 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Function mit Boost.Bind on Thu, 12 Aug 2010 12:17:24 GMT]]></title><description><![CDATA[<p>Und wenn StartTransfer weder unär noch binär ist... ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939175</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 12 Aug 2010 12:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Function mit Boost.Bind on Thu, 12 Aug 2010 12:32:03 GMT]]></title><description><![CDATA[<p>Darum geht es nicht. Du hast in der Signatur temp_CallbackStartTransfer doch angegeben, dass der Funktor einen Parameter vom Typ AsyncTCPClient* nimmt. Dann musst Du bind auch mitteilen, dass ein Funktor mit einem Parameter erstellt werden soll. Der Parameter ist hier das this-Objekt.</p>
<p>bind( nonstatic_member, _1 )( xxx ) wird hier automagisch zu xxx-&gt;nonstatic_member()</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">struct Test
{
    void func();
};

Test thisTest;
thisTest.func(); // thisTest links vom Punkt ist das this-Objekt.

function&lt; void ( Test* ) &gt; functor = bind( &amp;Test::func, _1 );
functor( &amp;thisTest ); // hier ist thisTest in der Klammer das this-Objekt
</code></pre>
<p>EDIT:<br />
Ah, gerade gesehen, dass der Parameter vom Typ AsyncTCPServer und die Methode aus der Klasse AsyncTCPClient ist. Da passt aber irgendwas nicht. Zum einen fehlt, wenn StartTransfer nicht-statisch ist, dass zum Aufruf gehörende AsyncTCPClient-Objekt (das ist das, was Tachyon meinte), zum anderen passt die Signatur void (AsyncTCPServer*) nicht zu AsyncTCPClient::StartTransfer()</p>
<p>Vielleicht fehlen auch einfach nur zu viele Informationen, um aus den Codeschnipseln eine sinnvolle Antwort zu bauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1939183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1939183</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 12 Aug 2010 12:32:03 GMT</pubDate></item></channel></rss>