<?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[Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das?]]></title><description><![CDATA[<p>Holla,<br />
wie der Titel/Betreff schon sagt, möchte ich gernen wissen ob man Threads in einer Klasse, zB. mit einer Methode Starten und Beenden kann. Zur Zeit arbeite ich an einer SOCKET Klasse und dort möchte ich gern the Threads zum empfangen und auswerten von Nachrichten einsetzten. Leider fehlt mir das Wissen dazu, wie und ob man mit Threads in einer Klasse arbeiten kann. Ich habe die Suchfunktion bereits genutzt, da ich mit Threads nicht auskenne verstand ich nahezu nichts.</p>
<p>StYleZ</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216272/sind-threads-_in_-einer-klasse-möglich-wenn-ja-wie-geht-das</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 13:56:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216272.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Jun 2008 18:22:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 18:22:23 GMT]]></title><description><![CDATA[<p>Holla,<br />
wie der Titel/Betreff schon sagt, möchte ich gernen wissen ob man Threads in einer Klasse, zB. mit einer Methode Starten und Beenden kann. Zur Zeit arbeite ich an einer SOCKET Klasse und dort möchte ich gern the Threads zum empfangen und auswerten von Nachrichten einsetzten. Leider fehlt mir das Wissen dazu, wie und ob man mit Threads in einer Klasse arbeiten kann. Ich habe die Suchfunktion bereits genutzt, da ich mit Threads nicht auskenne verstand ich nahezu nichts.</p>
<p>StYleZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533366</guid><dc:creator><![CDATA[StYleZ]]></dc:creator><pubDate>Sat, 21 Jun 2008 18:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 18:30:43 GMT]]></title><description><![CDATA[<p>Ja. Du musst dazu die Methode &quot;static&quot; machen und den &quot;this&quot; Pointer als Variable übergeben.<br />
Dann in der &quot;static&quot;-Methode die eigentliche &quot;Member-Funktion&quot; (dazu hast Du ja den &quot;this&quot;-Pointer übergeben bekommen) aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533368</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 21 Jun 2008 18:30:43 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 18:52:41 GMT]]></title><description><![CDATA[<p>BTW: Eine static-Methode ist eigentlich falsch, es muss eine freie Funktion mit extern &quot;C&quot; sein.<br />
Aber da es auf keinem Compiler für Windows zu Problemen kommt kann man natürlich auch die static-Methode nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533380</guid><dc:creator><![CDATA[-----]]></dc:creator><pubDate>Sat, 21 Jun 2008 18:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 19:34:33 GMT]]></title><description><![CDATA[<p>----- schrieb:</p>
<blockquote>
<p>BTW: Eine static-Methode ist eigentlich falsch, es muss eine freie Funktion mit extern &quot;C&quot; sein.</p>
</blockquote>
<p>huch? kannst du das mal genauer darlegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533388</guid><dc:creator><![CDATA[knallhart nachgefragt]]></dc:creator><pubDate>Sat, 21 Jun 2008 19:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 19:37:58 GMT]]></title><description><![CDATA[<p>Da static-Methoden keine vtable haben, passt es... eigentlich mit jedem Compiler... aber ob das im Standard so steht, wiess ich jetzt nicht... mit &quot;extern &quot;C&quot;&quot; kann es eigentlich nichts zu tun haben... eher mit der &quot;calling-convention&quot;; die ist aber je nach verwendeten &quot;create&quot; etwas anders...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533389</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 21 Jun 2008 19:37:58 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 20:02:40 GMT]]></title><description><![CDATA[<p>da steht was dazu, aber nicht im detail: <a href="http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.2" rel="nofollow">http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.2</a></p>
<blockquote>
<p>However, although it probably works on most compilers, it actually would have to be an extern &quot;C&quot; non-member function to be correct, since &quot;C linkage&quot; doesn't only cover things like name mangling, but also calling conventions, which might be different between C and C++.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1533398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533398</guid><dc:creator><![CDATA[hmmmmmmm]]></dc:creator><pubDate>Sat, 21 Jun 2008 20:02:40 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 21:25:01 GMT]]></title><description><![CDATA[<p>Also, der Grund ist die Calling-Convention, oder? Und die kann man (zumindest bei MS VC++) bei static Memberfunktionen angeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533431</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 21 Jun 2008 21:25:01 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 22:17:35 GMT]]></title><description><![CDATA[<p>Danke für die Antworten.<br />
Leider bin ich nicht wirklich schlau daraus geworden.<br />
Kann jemand ein simples/kleines Beispiel posten?</p>
<p>StYleZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533463</guid><dc:creator><![CDATA[StYleZ]]></dc:creator><pubDate>Sat, 21 Jun 2008 22:17:35 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Sat, 21 Jun 2008 23:56:51 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-97922.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-97922.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1533501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1533501</guid><dc:creator><![CDATA[f]]></dc:creator><pubDate>Sat, 21 Jun 2008 23:56:51 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Tue, 24 Jun 2008 17:53:03 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich komme nicht dahinter.<br />
Zurzeit bekomme ich folgende Fehlermeldung:</p>
<p>[BCC32 Fehler] sock.cpp(154): E2034 Konvertierung von 'void (* (_closure )(void *))(void <em>)' nach 'void (</em>)(void <em>)' nicht möglich<br />
[BCC32 Fehler] sock.cpp(154): E2342 Keine Übereinstimmung des Typs beim Parameter '__start' ('void (</em>)(void *)' erwartet, 'void' erhalten)</p>
<p>Ich nutze CodeGear C++ Builder.<br />
Hat jemand eine Anhung was man ändern mus, damit es läuft?<br />
Hier der komplette Code:</p>
<p>sock.h</p>
<pre><code class="language-cpp">#include &lt;vcl.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;process.h&gt;

class sock
{        
  private:
	bool tRun;
	SOCKET socke; 			//FÜR
	SOCKADDR_IN addr;   	//CLIENT
	SOCKET acceptsocket;	//FÜR
	SOCKET serversocket;    //SERVER
	AnsiString type; 		//FÜR
	AnsiString protokoll;   //BEIDE
	AnsiString url;         //TYPEN
	int port;
	SOCKADDR_IN remoteAddr; //FÜR
	int remoteAddrLen; 		//UDP
	static int zaehler;
	int wsastart();
	AnsiString resolvehost(AnsiString serverurl);

  public:
	sock();
	~sock();
	int snd(AnsiString sendbuff);
	int rcv(AnsiString&amp; recvbuff);
	void init(AnsiString Stype,AnsiString Sprotokoll,AnsiString Surl,int Sport);
	void StartThread();
	void CloseThread();
	void trcv(void *dummy);
};
</code></pre>
<p>sock.cpp</p>
<pre><code class="language-cpp">int sock::zaehler = 0;
sock::sock() {}
sock::~sock()
{
	zaehler--;
	if (lstrcmp(type.c_str(),&quot;client&quot;)==0) { closesocket(socke); }
	else {
		if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { closesocket(acceptsocket); }
		closesocket(serversocket);
	}
	if (zaehler == 0) { WSACleanup(); }
}
void sock::init(AnsiString Stype,AnsiString Sprotokoll,AnsiString Surl,int Sport)
{
	tRun = 0;
	port = Sport;
	url = Surl;
	zaehler++;
	if (zaehler == 1) { wsastart(); }
	if(lstrcmp(Stype.c_str(),&quot;server&quot;)==0)		//Server
	{
		type = &quot;server&quot;;
		memset(&amp;addr,0,sizeof(SOCKADDR_IN));
		addr.sin_family=AF_INET;
		addr.sin_port=htons(port);
		addr.sin_addr.s_addr=ADDR_ANY;
		if (lstrcmp(Sprotokoll.c_str(),&quot;tcp&quot;)==0)
		{
			protokoll = &quot;tcp&quot;;		//TCP
			acceptsocket = socket(AF_INET, SOCK_STREAM, 0);
			if (acceptsocket == INVALID_SOCKET) { cout&lt;&lt;&quot;couldn't create socket (accept socket)\n&quot;; }
			else { cout&lt;&lt;&quot;acceptsocket set to TCP\n&quot;; }
			if (bind(acceptsocket,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { cout&lt;&lt;&quot;couldn't bind socket\n&quot;; }
			else { cout&lt;&lt;&quot;acceptsocket seccessfully bound (tcp server)!\n&quot;; }
			if (listen(acceptsocket,10) == SOCKET_ERROR) { cout&lt;&lt;&quot;couldn't set listen mode\n&quot;; }
			else { cout&lt;&lt;&quot;acceptsocket set to Listen mode\n&quot;; }
			serversocket=accept(acceptsocket,NULL,NULL);
			if (serversocket == INVALID_SOCKET) { cout&lt;&lt;&quot;couldn't accept connection\n&quot;; }
			else { cout&lt;&lt;&quot;ServerSocket accepted a connection!\n&quot;; }
		}
		else if (lstrcmp(Sprotokoll.c_str(),&quot;udp&quot;)==0)
		{
			protokoll = &quot;udp&quot;; 		//UDP
			remoteAddrLen=sizeof(SOCKADDR_IN);
			serversocket = socket(AF_INET,SOCK_DGRAM,0);
			if (serversocket == INVALID_SOCKET) { cout&lt;&lt;&quot;couldn't create socket (serversocket UDP)\n&quot;; }
			else { cout&lt;&lt;&quot;serversocket set to UDP\n&quot;;
				if (bind(serversocket,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { cout&lt;&lt;&quot;couldn't bind socket\n&quot;; }
				else { cout&lt;&lt;&quot;serversocket seccessfully bound (udp server)!\n&quot;; }
			}
		}
	}
	else if (lstrcmp(Stype.c_str(),&quot;client&quot;)==0)		//Client
	{
		type = &quot;client&quot;;	//TCP
		url = resolvehost(url);
		memset(&amp;addr,0,sizeof(SOCKADDR_IN));
		addr.sin_family=AF_INET;
		addr.sin_port=htons(port);
		addr.sin_addr.s_addr=inet_addr(url.c_str());
		if (lstrcmp(Sprotokoll.c_str(),&quot;tcp&quot;)==0)
		{
			protokoll = &quot;tcp&quot;;
			socke = socket(AF_INET, SOCK_STREAM, 0);
			if (socke == INVALID_SOCKET) { cout&lt;&lt;&quot;couldn't create socket (socke)\n&quot;; }
			else { cout&lt;&lt;&quot;socket set to tcp!\n&quot;; }
			if (connect(socke,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR)) == SOCKET_ERROR) { cout&lt;&lt;&quot;couldn't connect\n&quot;; }
			else { cout&lt;&lt;&quot;connected to server\n&quot;; }
		}
		else if (lstrcmp(Sprotokoll.c_str(),&quot;udp&quot;)==0)
		{
			protokoll = &quot;udp&quot;;	//UDP
			remoteAddrLen=sizeof(SOCKADDR_IN);
			socke=socket(AF_INET,SOCK_DGRAM,0);
			if (socke == INVALID_SOCKET) { cout&lt;&lt;&quot;couldn't create socket (socke)\n&quot;; }
			else { cout&lt;&lt;&quot;socket set to udp!\n&quot;; }
		}
	}
	else { cout&lt;&lt;&quot;unknown type&quot;&lt;&lt;endl; }
}
int sock::snd(AnsiString sendbuff)
{
	if (lstrcmp(type.c_str(),&quot;client&quot;)==0) {
		if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { return send(socke,sendbuff.c_str(),sendbuff.Length(),0); }
		else { return sendto(socke,sendbuff.c_str(),sendbuff.Length(),0,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR_IN)); }
	}
	else {
		if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { send(serversocket,sendbuff.c_str(),sendbuff.Length(),0); }
		else { return sendto(serversocket,sendbuff.c_str(),sendbuff.Length(),0,(SOCKADDR*)&amp;remoteAddr,remoteAddrLen); }
	}
	return 0;
}
int sock::rcv(AnsiString&amp; recvbuff)
{
	int fix;
	char rcvbuff[10000];
	if (lstrcmp(type.c_str(),&quot;client&quot;)==0) {
		if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { fix = recv(socke,rcvbuff,10000,0); }
		else { fix = recvfrom(socke,rcvbuff,10000,0,(SOCKADDR*)&amp;remoteAddr,&amp;remoteAddrLen); }
	}
	else {
		if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { fix = recv(serversocket,rcvbuff,10000,0); }
		else { fix = recvfrom(serversocket,rcvbuff,10000,0,(SOCKADDR*)&amp;remoteAddr,&amp;remoteAddrLen); }
	}
	rcvbuff[fix]='\0';
	recvbuff = rcvbuff;
	return fix;
}
AnsiString sock::resolvehost(AnsiString serverurl)
{
	hostent *dns = gethostbyname(serverurl.c_str());
	if (!dns) { return 0; }
	else
	{
		sprintf(serverurl.c_str(), &quot;%u.%u.%u.%u&quot;,
			(unsigned char) dns-&gt;h_addr_list[0][0],
			(unsigned char) dns-&gt;h_addr_list[0][1],
			(unsigned char) dns-&gt;h_addr_list[0][2],
			(unsigned char) dns-&gt;h_addr_list[0][3]);
		return serverurl;
	}
}
int sock::wsastart()
{
	WSADATA wsa;
	return WSAStartup(MAKEWORD(2,2),&amp;wsa);
}
void sock::trcv(void *dummy)
{
	while (tRun)
	{
		AnsiString recvbuff;
		int fix;
		char rcvbuff[10000];
		if (lstrcmp(type.c_str(),&quot;client&quot;)==0) {
			if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { fix = recv(socke,rcvbuff,10000,0); }
			else { fix = recvfrom(socke,rcvbuff,10000,0,(SOCKADDR*)&amp;remoteAddr,&amp;remoteAddrLen); }
		}
		else {
			if (lstrcmp(protokoll.c_str(),&quot;tcp&quot;)==0) { fix = recv(serversocket,rcvbuff,10000,0); }
			else { fix = recvfrom(serversocket,rcvbuff,10000,0,(SOCKADDR*)&amp;remoteAddr,&amp;remoteAddrLen); }
		}
		rcvbuff[fix]='\0';
		recvbuff = rcvbuff;
		cout&lt;&lt;recvbuff.c_str()&lt;&lt;endl;
	}
	if (tRun == 0) {
		_endthreadex( 0 );
	}
}
void sock::StartThread()
{
	tRun = 1;
	_beginthread(trcv,0,NULL);
}
void sock::CloseThread()
{
	tRun = 0;
}
</code></pre>
<p>File.cpp</p>
<pre><code class="language-cpp">#include &lt;vcl.h&gt;
#include &lt;iostream.h&gt;
#include &lt;process.h&gt;
#include &quot;sock.h&quot;
#include &quot;sock.cpp&quot;
#pragma hdrstop
#pragma argsused

int main(int argc, char* argv[])
{
	AnsiString msg=&quot;&quot;;
	sock s1;
	s1.init(&quot;client&quot;,&quot;tcp&quot;,&quot;irc.quakenet.org&quot;,6667);
	s1.StartThread();
	AnsiString emailaddress = &quot;blubb@bla.com&quot;,fullname = &quot;bla&quot;;
	AnsiString NICK = &quot;NICK test123\r\n&quot;;
	AnsiString USER = &quot;USER &quot; + emailaddress.SubString(1,emailaddress.Pos(&quot;@&quot;)-1) + ' ' + '&quot;' + emailaddress.SubString(emailaddress.Pos(&quot;@&quot;)+1,emailaddress.Length()) + '&quot;' + ' ' + '&quot;' + &quot;localhost&quot; + '&quot;' + ' ' + ':' + fullname + &quot;\r\n&quot;;
	s1.snd(NICK);
	s1.snd(USER);
	system(&quot;PAUSE&quot;);
	return 0;
}
</code></pre>
<p>StYleZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1534994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1534994</guid><dc:creator><![CDATA[StYleZ]]></dc:creator><pubDate>Tue, 24 Jun 2008 17:53:03 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Tue, 24 Jun 2008 19:53:41 GMT]]></title><description><![CDATA[<p>Du hast die Hilfestellungen der anderen nicht umgesetzt.</p>
<pre><code class="language-cpp">void* sock::trcv(void*)
</code></pre>
<p>müsste, so bin ich der Meinung nach kurzem Überfliegen dieses <em>Codebatzens</em>,</p>
<pre><code class="language-cpp">static void* sock::trcv(void*)
</code></pre>
<p>sein.</p>
<p>denn _beginthread will ja eine Funktion haben und keine Memberfunktio.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535069</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Tue, 24 Jun 2008 19:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Tue, 24 Jun 2008 21:07:33 GMT]]></title><description><![CDATA[<p>Richtig ich hab's nicht umgesetzt, aber ich habe es versucht.<br />
Nun das Problem scheint gelöst zu sein (zumindest meckert der Compiler nicht).</p>
<p>sock.h</p>
<pre><code class="language-cpp">static void trcv(void*);
</code></pre>
<p>sock.cpp</p>
<pre><code class="language-cpp">void sock::trcv(void*) { .... }
</code></pre>
<p>Wie es immer so ist kommt sofort das nächste Problem.</p>
<p>[BCC32 Fehler] sock.cpp(130): E2231 Element sock::tRun kann nicht ohne ein Objekt verwendet werden<br />
[BCC32 Fehler] sock.cpp(135): E2231 Element sock::type kann nicht ohne ein Objekt verwendet werden<br />
[BCC32 Fehler] sock.cpp(136): E2231 Element sock::protokoll kann nicht ohne ein Objekt verwendet werden<br />
[BCC32 Fehler] sock.cpp(137): E2231 Element sock::socke kann nicht ohne ein Objekt verwendet werden<br />
[BCC32 Fehler] sock.cpp(137): E2031 Typumwandlung von 'sockaddr_in sock::*' nach 'sockaddr <em>' nicht zulässig<br />
[BCC32 Fehler] sock.cpp(137): E2034 Konvertierung von 'int sock::</em>' nach 'int <em>' nicht möglich<br />
[BCC32 Fehler] sock.cpp(137): E2342 Keine Übereinstimmung des Typs beim Parameter 'fromlen' ('int <em>' erwartet, 'int sock::</em>' erhalten)<br />
[BCC32 Fehler] sock.cpp(140): E2231 Element sock::protokoll kann nicht ohne ein Objekt verwendet werden<br />
[BCC32 Fehler] sock.cpp(141): E2231 Element sock::serversocket kann nicht ohne ein Objekt verwendet werden<br />
[BCC32 Fehler] sock.cpp(141): E2031 Typumwandlung von 'sockaddr_in sock::</em>' nach 'sockaddr <em>' nicht zulässig<br />
[BCC32 Fehler] sock.cpp(141): E2034 Konvertierung von 'int sock::</em>' nach 'int *' nicht möglich<br />
[BCC32 Fehler] sock.cpp(141): E2342 Keine Übereinstimmung des Typs beim Parameter 'fromlen' ('int <em>' erwartet, 'int sock::</em>' erhalten)<br />
[BCC32 Fehler] sock.cpp(147): E2231 Element sock::tRun kann nicht ohne ein Objekt verwendet werden</p>
<p>Hab mich an diesen Link orientiert: <a href="http://forum.fachinformatiker.de/c-c/85081-problem-_beginthread-aufruf.html" rel="nofollow">http://forum.fachinformatiker.de/c-c/85081-problem-_beginthread-aufruf.html</a><br />
Den Code geändert:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">sock s1;
s1.init(&quot;client&quot;,&quot;tcp&quot;,&quot;irc.quakenet.org&quot;,6667);
_beginthread(s1.trcv,0,NULL);
</code></pre>
<p>Kommt leider wieder auf das selbe hinaus.</p>
<p>Danke für die Antwort Xantus <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="😉"
    /></p>
<p>StYleZ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535149</guid><dc:creator><![CDATA[StYleZ]]></dc:creator><pubDate>Tue, 24 Jun 2008 21:07:33 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Tue, 24 Jun 2008 21:40:16 GMT]]></title><description><![CDATA[<p>StYleZ schrieb:</p>
<blockquote>
<pre><code>[BCC32 Fehler] sock.cpp(130): E2231 Element sock::tRun kann nicht ohne ein Objekt verwendet werden
[BCC32 Fehler] sock.cpp(135): E2231 Element sock::type kann nicht ohne ein Objekt verwendet werden
[BCC32 Fehler] sock.cpp(136): E2231 Element sock::protokoll kann nicht ohne ein Objekt verwendet werden
[BCC32 Fehler] sock.cpp(137): E2231 Element sock::socke kann nicht ohne ein
</code></pre>
</blockquote>
<p>Das liegt daran, dass jetzt die static Memberfunktion versucht, auf Member der Klasse zuzugreifen. Das funktioniert aber nicht, weil du in der static Memberfunction nicht an den this-Zeiger kommst. Wie viel Erfahrung hast du mit der Sprache?</p>
<p>Du gehst jetzt folgermaßen vor:</p>
<p>Du lagerst den code aus static void* sock::trcv(void*) nach void sock::trvc_impl() aus, eine Memberfunktion.<br />
bei _beginthreadex() übergibst du als argument an trcv den this-Zeiger (mit cast nach void*).</p>
<p>die static-Funktion sollte dann so ungefähr aussehen:</p>
<pre><code class="language-cpp">/* static */ void* sock::trcv(void* data)
{
    if(data) {
        return reinterpret_cast&lt;sock*&gt;(data)-&gt;trcv_impl();
    }
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1535179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535179</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Tue, 24 Jun 2008 21:40:16 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Wed, 25 Jun 2008 09:17:50 GMT]]></title><description><![CDATA[<p>sock.h</p>
<pre><code class="language-cpp">static void* trcv(void* data);
	void trcv_impl();
</code></pre>
<p>sock.cpp</p>
<pre><code class="language-cpp">void* sock::trcv(void* data)
{
    if(data) {
		return reinterpret_cast&lt;sock*&gt;(data)-&gt;trcv_impl();
    }
	return 0;
}
void sock::trcv_impl()
{
 	while (1)
	{
          ......
	}
}
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">_beginthread(s1.trcv,0,s1.trcv((void*) zeiger));
</code></pre>
<p>So hab ich den Post verstanden.<br />
Natürlich klappt es so nicht.<br />
Da ich nicht nachvollziehen kann, was du mit dem this-Pointer meinst.<br />
Bzgl. der Erfahrung.<br />
3 Jahre C/C++/ASM Grundkenntnisse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535350</guid><dc:creator><![CDATA[StYleZ]]></dc:creator><pubDate>Wed, 25 Jun 2008 09:17:50 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Wed, 25 Jun 2008 10:51:29 GMT]]></title><description><![CDATA[<p>StYleZ schrieb:</p>
<blockquote>
<p>3 Jahre C/C++/ASM Grundkenntnisse.</p>
</blockquote>
<p>Ohne dich persönlich angreifen zu wollen (!!), aber hast du in der Zeit geschlafen? <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="😕"
    /></p>
<p>trvc_impl() muss schon vom typ <strong>void</strong>* und nicht <strong>void</strong> sein, sonst kannst den Wert doch nicht in static trcv zurückgeben!</p>
<p>Lies dir mal etwas über den <a href="http://tutorial.schornboeck.net/this.htm" rel="nofollow">this-Zeiger</a> (google: c++ this zeiger, 1. Ergebnis) durch, ebenso etwas über <a href="http://en.wikipedia.org/wiki/Function_pointer" rel="nofollow">Funktionszeiger (bzw. Callbacks)</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535448</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Wed, 25 Jun 2008 10:51:29 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Wed, 25 Jun 2008 11:33:39 GMT]]></title><description><![CDATA[<p>Du lagerst den code aus static void* sock::trcv(void*) nach void sock::trvc_impl() aus, eine Memberfunktion.</p>
<p>Meiner Meinung nach habe ich das auch so gemacht wie du es geschrieben hast.<br />
Bzgl. der Ausbildung habe ich im ersten Jahr geschlafen, weil so langweilig war. Im 2ten und 3ten Jahr war ich wach. Da die Zeiger nur sehr kurz angesprochen wurden weis ich dem entsprechend wenig über Zeiger. Und da Threads sowieso nicht zur Grundausbildung gehören weis ich über Threads noch weniger.<br />
Bevor ich weiter im Dunkeln rumirre kannst du nicht einfach diese kleinen Änderungen posten?<br />
Ehrlich gesagt ist es für mich ein Ratespiel wie ich die Funktion aufrufen soll etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535481</guid><dc:creator><![CDATA[StYleZ]]></dc:creator><pubDate>Wed, 25 Jun 2008 11:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Sind Threads _IN_ einer Klasse möglich? Wenn ja wie geht das? on Thu, 26 Jun 2008 10:34:12 GMT]]></title><description><![CDATA[<p>Hab es selbst geschafft.<br />
StYlez</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1536203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1536203</guid><dc:creator><![CDATA[zu.faul.zum.einloggen]]></dc:creator><pubDate>Thu, 26 Jun 2008 10:34:12 GMT</pubDate></item></channel></rss>