<?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[Function Pointer bzw. Callback Problem]]></title><description><![CDATA[<p>hi,</p>
<p>ich arbeite mit GTK+ und versuche gerade eine callback-funktion für meinen TCP-Socket zu verwenden. Allerdings bekomm ich ne Fehlermeldung beim Kompilieren. Habe jetzt mal den Teil mit dem Fehler hier reinkopiert:</p>
<pre><code class="language-cpp">bool TestApp::createConnection(int timeout_seconds, bool startup) {
      //...
      GIOChannel *socket_chan = g_io_channel_unix_new(m_socket.getRawSocket());    
      guint sourceID = g_io_add_watch(socket_chan, G_IO_IN, &amp;TestApp::onDataAvailable, NULL);   // FEHLER

      return true;
}

gboolean TestApp::onDataAvailable(GIOChannel *gio, GIOCondition condition, gpointer data)
{
//...
}
</code></pre>
<p>Die Funktion onDataAvailable wird also als Callback registriert und sollte aufgerufen werden, sobald Daten am Socket anliegen. Nachdem ich mich allerdings mit Function Pointer nicht wirklich gut auskenne scheitere ich an folgender Meldung:</p>
<blockquote>
<p>Fehler: »gboolean (TestApp::<em>)(GIOChannel</em>, GIOCondition, void*)« kann nicht nach »gboolean (<em>)(GIOChannel</em>, GIOCondition, void*)« für Argument »3« nach »guint g_io_add_watch(GIOChannel*, GIOCondition, gboolean (<em>)(GIOChannel</em>, GIOCondition, void*), void*)« umgewandelt werden</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/209794/function-pointer-bzw-callback-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 22:52:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209794.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Apr 2008 13:42:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Function Pointer bzw. Callback Problem on Thu, 03 Apr 2008 13:42:33 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich arbeite mit GTK+ und versuche gerade eine callback-funktion für meinen TCP-Socket zu verwenden. Allerdings bekomm ich ne Fehlermeldung beim Kompilieren. Habe jetzt mal den Teil mit dem Fehler hier reinkopiert:</p>
<pre><code class="language-cpp">bool TestApp::createConnection(int timeout_seconds, bool startup) {
      //...
      GIOChannel *socket_chan = g_io_channel_unix_new(m_socket.getRawSocket());    
      guint sourceID = g_io_add_watch(socket_chan, G_IO_IN, &amp;TestApp::onDataAvailable, NULL);   // FEHLER

      return true;
}

gboolean TestApp::onDataAvailable(GIOChannel *gio, GIOCondition condition, gpointer data)
{
//...
}
</code></pre>
<p>Die Funktion onDataAvailable wird also als Callback registriert und sollte aufgerufen werden, sobald Daten am Socket anliegen. Nachdem ich mich allerdings mit Function Pointer nicht wirklich gut auskenne scheitere ich an folgender Meldung:</p>
<blockquote>
<p>Fehler: »gboolean (TestApp::<em>)(GIOChannel</em>, GIOCondition, void*)« kann nicht nach »gboolean (<em>)(GIOChannel</em>, GIOCondition, void*)« für Argument »3« nach »guint g_io_add_watch(GIOChannel*, GIOCondition, gboolean (<em>)(GIOChannel</em>, GIOCondition, void*), void*)« umgewandelt werden</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1485830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1485830</guid><dc:creator><![CDATA[edwood]]></dc:creator><pubDate>Thu, 03 Apr 2008 13:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer bzw. Callback Problem on Thu, 03 Apr 2008 13:49:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>g_io_add_watch verlangt nach einer freien Funktion, du übergibst aber eine Memberfunktion von TestApp. Wenn es möglich ist mache die Funktion doch static.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1485834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1485834</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 03 Apr 2008 13:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer bzw. Callback Problem on Thu, 03 Apr 2008 14:26:15 GMT]]></title><description><![CDATA[<p>ok, danke, das wars.<br />
konnte zwar die funktion nicht static machen, hab jetzt aber einfach ne neue static funktion geschrieben und die als callback registriert. diese ruft dann einfach nur die eigentliche nicht-static funktion auf. ist das der &quot;normale&quot; weg oder macht man sowas grundsätzlich anders?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1485868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1485868</guid><dc:creator><![CDATA[edwood]]></dc:creator><pubDate>Thu, 03 Apr 2008 14:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer bzw. Callback Problem on Thu, 03 Apr 2008 14:33:47 GMT]]></title><description><![CDATA[<p>edwood schrieb:</p>
<blockquote>
<p>ist das der &quot;normale&quot; weg oder macht man sowas grundsätzlich anders?</p>
</blockquote>
<p>Dieser Weg ist durchaus üblich, viele andere Möglichkeiten hast du auch nicht.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1485874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1485874</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 03 Apr 2008 14:33:47 GMT</pubDate></item></channel></rss>