<?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[Mehrere Variablen zurückgeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche gerade mehrere Variablen zurück zugeben.</p>
<p>Einmal ein struct sockaddr_in und die Socket ID vom Typ Inet:</p>
<p>Funktion:</p>
<pre><code>std::pair&lt;sockaddr_in, int&gt; TelemetryReceiver::CreateUDPClient(int port, const char* ip){

	// ServerAdress Struktor
	sockaddr_in *serverAdress;

	// Neuen Socket erstellen
	int _socket = socket(AF_INET,SOCK_DGRAM,0);

	// Informationen übergeben
	serverAdress.sin_family = AF_INET;
	serverAdress.sin_addr.s_addr = inet_addr(ip);
	serverAdress.sin_port = htons(port);

	// Alles ok?
	if(_socket == -1)
	{
		// Nicht gut!
		throw THOMASException(&quot;Beim erstellen des Sockets ist ein Fehler aufgetreten&quot;);
	}

	return std::make_pair(serverAdress, _socket);
}
</code></pre>
<p>Header:</p>
<pre><code>std::pair&lt;sockaddr_in, int&gt; CreateUDPClient(int port, const char* ip);
</code></pre>
<p>Und als Fehlermeldung bekomme ich folgendes:</p>
<pre><code>TelemetryReceiver.cpp:22:29: error: prototype for ‘std::pair&lt;sockaddr_in, int&gt; THOMAS::TelemetryReceiver::CreateUDPClient(int, const char*)’ does not match any in class ‘THOMAS::TelemetryReceiver’
 std::pair&lt;sockaddr_in, int&gt; TelemetryReceiver::CreateUDPClient(int port, const char* ip){
                             ^
In file included from TelemetryReceiver.cpp:1:0:
TelemetryReceiver.h:27:32: error: candidate is: std::pair&lt;THOMAS::TelemetryReceiver::sockaddr_in, int&gt; THOMAS::TelemetryReceiver::CreateUDPClient(int, const char*)
    std::pair&lt;sockaddr_in, int&gt; CreateUDPClient(int port, const char* ip);
                                ^
make: *** [TelemetryReceiver.o] Fehler 1
</code></pre>
<p>Woran liegt der Fehler, ich habe keine Ahnung mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";("
      alt="😢"
    /></p>
<p>Ich hatte nämlich vor, diese createUDPClient Methode mehrmals aus verschiedenen Threads aufzurufen. Wenn ich die SocketID dann global speichern würde, dann würde diese doch immer wieder überschrieben werden, oder liege ich da falsch?</p>
<p>Ich bin gerade am C++ lernen, und habe mit Templates noch nicht soviel Erfahung, also seid nicht zu hart zu mir <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="😃"
    /></p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331328/mehrere-variablen-zurückgeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 16:44:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331328.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 22 Feb 2015 20:20:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mehrere Variablen zurückgeben on Sun, 22 Feb 2015 20:24:14 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche gerade mehrere Variablen zurück zugeben.</p>
<p>Einmal ein struct sockaddr_in und die Socket ID vom Typ Inet:</p>
<p>Funktion:</p>
<pre><code>std::pair&lt;sockaddr_in, int&gt; TelemetryReceiver::CreateUDPClient(int port, const char* ip){

	// ServerAdress Struktor
	sockaddr_in *serverAdress;

	// Neuen Socket erstellen
	int _socket = socket(AF_INET,SOCK_DGRAM,0);

	// Informationen übergeben
	serverAdress.sin_family = AF_INET;
	serverAdress.sin_addr.s_addr = inet_addr(ip);
	serverAdress.sin_port = htons(port);

	// Alles ok?
	if(_socket == -1)
	{
		// Nicht gut!
		throw THOMASException(&quot;Beim erstellen des Sockets ist ein Fehler aufgetreten&quot;);
	}

	return std::make_pair(serverAdress, _socket);
}
</code></pre>
<p>Header:</p>
<pre><code>std::pair&lt;sockaddr_in, int&gt; CreateUDPClient(int port, const char* ip);
</code></pre>
<p>Und als Fehlermeldung bekomme ich folgendes:</p>
<pre><code>TelemetryReceiver.cpp:22:29: error: prototype for ‘std::pair&lt;sockaddr_in, int&gt; THOMAS::TelemetryReceiver::CreateUDPClient(int, const char*)’ does not match any in class ‘THOMAS::TelemetryReceiver’
 std::pair&lt;sockaddr_in, int&gt; TelemetryReceiver::CreateUDPClient(int port, const char* ip){
                             ^
In file included from TelemetryReceiver.cpp:1:0:
TelemetryReceiver.h:27:32: error: candidate is: std::pair&lt;THOMAS::TelemetryReceiver::sockaddr_in, int&gt; THOMAS::TelemetryReceiver::CreateUDPClient(int, const char*)
    std::pair&lt;sockaddr_in, int&gt; CreateUDPClient(int port, const char* ip);
                                ^
make: *** [TelemetryReceiver.o] Fehler 1
</code></pre>
<p>Woran liegt der Fehler, ich habe keine Ahnung mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";("
      alt="😢"
    /></p>
<p>Ich hatte nämlich vor, diese createUDPClient Methode mehrmals aus verschiedenen Threads aufzurufen. Wenn ich die SocketID dann global speichern würde, dann würde diese doch immer wieder überschrieben werden, oder liege ich da falsch?</p>
<p>Ich bin gerade am C++ lernen, und habe mit Templates noch nicht soviel Erfahung, also seid nicht zu hart zu mir <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="😃"
    /></p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443884</guid><dc:creator><![CDATA[Waishon]]></dc:creator><pubDate>Sun, 22 Feb 2015 20:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Variablen zurückgeben on Sun, 22 Feb 2015 20:36:22 GMT]]></title><description><![CDATA[<p>Wo kommt sockaddr_in im Header her? Der Compiler findet nur ein THOMAS::TelemetryReceiver::sockaddr_in. Hast du eine struct in der Klasse vorwärtsdeklariert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443888</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 22 Feb 2015 20:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Variablen zurückgeben on Sun, 22 Feb 2015 20:38:33 GMT]]></title><description><![CDATA[<p>Ich hab im Header geschrieben:<br />
struct sockaddr_in;</p>
<p>Ist vermutlich falsch oder <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443889</guid><dc:creator><![CDATA[Waishon]]></dc:creator><pubDate>Sun, 22 Feb 2015 20:38:33 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Variablen zurückgeben on Sun, 22 Feb 2015 21:09:36 GMT]]></title><description><![CDATA[<p>Du hast das wohl in die Klasse TelemtryReceiver geschrieben. Das bedeutet, dass das sich die struct allerdings auch darauf bezieht und nicht auf die im globalen Namespace.<br />
Ergo: Deklariere sie im globalen Namespace.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443893</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 22 Feb 2015 21:09:36 GMT</pubDate></item><item><title><![CDATA[Reply to Mehrere Variablen zurückgeben on Mon, 23 Feb 2015 07:32:45 GMT]]></title><description><![CDATA[<p>Waishon schrieb:</p>
<blockquote>
<pre><code>// ServerAdress Struktor
	sockaddr_in *serverAdress;

        ...

	// Informationen übergeben
	serverAdress.sin_family = AF_INET;
	serverAdress.sin_addr.s_addr = inet_addr(ip);
	serverAdress.sin_port = htons(port);
</code></pre>
</blockquote>
<p>Das kann nicht funktionieren ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443926</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 23 Feb 2015 07:32:45 GMT</pubDate></item></channel></rss>