<?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[Typenproblem bei Funktionszeiger]]></title><description><![CDATA[<p>Huhu!<br />
Ich möchte einen Thread innerhalb einer Klasse erstellen und will das folgendermaßen realisieren:</p>
<pre><code class="language-cpp">int ircclient::irc_connect(char *HostnameOrIP, int Port)
{
	...

	//Message Dispatcher starten
    int  iret1;
    iret1 = pthread_create( &amp;dispatcher_thread, NULL, message_dispatcher, (void*)&amp;s);

	return 0;
}

void ircclient::*message_dispatcher( void *socket )
{	
   ...
}
</code></pre>
<p>Wenn ich das kompilieren will, bekomme ich in Zeile 7 folgenden fehler:</p>
<pre><code>Fehler: Argument des Typs &gt;&gt;void* (ircclient::)(void*)&lt;&lt; passt nicht zu &gt;&gt;void*(*)(void*)&lt;&lt;
</code></pre>
<p>Wenn ich die Threadfunktion außerhalb der Klasse definiere, lässt sich der Code Problemlos kompilieren:</p>
<pre><code class="language-cpp">int ircclient::irc_connect(char *HostnameOrIP, int Port)
{
	...

	//Message Dispatcher starten
    int  iret1;
    iret1 = pthread_create( &amp;dispatcher_thread, NULL, message_dispatcher, (void*)&amp;s);

	return 0;
}

void *message_dispatcher( void *socket )
{	
   ...
}
</code></pre>
<p>Die Funktion muss aber unbedingt in der Klasse sein! Was mache ich falsch, bzw ist das überhaupt möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/205747/typenproblem-bei-funktionszeiger</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 06:29:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205747.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Feb 2008 16:39:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typenproblem bei Funktionszeiger on Sun, 17 Feb 2008 16:39:26 GMT]]></title><description><![CDATA[<p>Huhu!<br />
Ich möchte einen Thread innerhalb einer Klasse erstellen und will das folgendermaßen realisieren:</p>
<pre><code class="language-cpp">int ircclient::irc_connect(char *HostnameOrIP, int Port)
{
	...

	//Message Dispatcher starten
    int  iret1;
    iret1 = pthread_create( &amp;dispatcher_thread, NULL, message_dispatcher, (void*)&amp;s);

	return 0;
}

void ircclient::*message_dispatcher( void *socket )
{	
   ...
}
</code></pre>
<p>Wenn ich das kompilieren will, bekomme ich in Zeile 7 folgenden fehler:</p>
<pre><code>Fehler: Argument des Typs &gt;&gt;void* (ircclient::)(void*)&lt;&lt; passt nicht zu &gt;&gt;void*(*)(void*)&lt;&lt;
</code></pre>
<p>Wenn ich die Threadfunktion außerhalb der Klasse definiere, lässt sich der Code Problemlos kompilieren:</p>
<pre><code class="language-cpp">int ircclient::irc_connect(char *HostnameOrIP, int Port)
{
	...

	//Message Dispatcher starten
    int  iret1;
    iret1 = pthread_create( &amp;dispatcher_thread, NULL, message_dispatcher, (void*)&amp;s);

	return 0;
}

void *message_dispatcher( void *socket )
{	
   ...
}
</code></pre>
<p>Die Funktion muss aber unbedingt in der Klasse sein! Was mache ich falsch, bzw ist das überhaupt möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457638</guid><dc:creator><![CDATA[Perner]]></dc:creator><pubDate>Sun, 17 Feb 2008 16:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Typenproblem bei Funktionszeiger on Sun, 17 Feb 2008 16:42:17 GMT]]></title><description><![CDATA[<p>Schau mal hier: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-205519-and-highlight-is-.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-205519-and-highlight-is-.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457642</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 17 Feb 2008 16:42:17 GMT</pubDate></item><item><title><![CDATA[Reply to Typenproblem bei Funktionszeiger on Sun, 17 Feb 2008 18:03:10 GMT]]></title><description><![CDATA[<p>am einfachsten:</p>
<pre><code class="language-cpp">#if !defined (IRC_CLIENT_HPP__INCLUDED)
#define IRC_CLIENT_HPP__INCLUDED

#if (_MSC_VER &gt;= 1300)
#pragma once
#endif // (_MSC_VER &gt;= 1300)

#include &lt;string&gt;

namespace irc
{
    class client
    {
       // ...
    public:
        int connect(std::string const&amp;, const unsigned short);

    private:
        inline static void _message_dispatcher(void* ptr_this)
        { static_cast&lt;client*&gt;(ptr_this)-&gt;message_dispatcher(); }

    public:
        virtual void message_dispatcher();

    // ...
    };
}; // irc

#endif // IRC_CLIENT_HPP__INCLUDED
</code></pre>
<pre><code class="language-cpp">#include &quot;irc\client.hpp&quot;
#include &lt;iostream&gt; // std::clog ;)

namespace irc
{
    int client::connect(std::string const&amp; host, const unsigned short port)
    {
        // ...
        const int result(::pthread_create(&amp;dispatcher_thread, NULL, &amp;client::_message_dispatcher, this);
        // ...
        return 0;
    }

    void client::message_dispatcher()
    {
        std::clog &lt;&lt; &quot;Dispatching messages!&quot; &lt;&lt; std::endl;
    }
}; // irc
</code></pre>
<p>Wenn du noch Parameter an message_dispatcher übergeben willst, musst du eine struct nutzen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1457702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1457702</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 17 Feb 2008 18:03:10 GMT</pubDate></item></channel></rss>