<?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[Probleme beim Casting von Struktur in Klassen [gelöst]]]></title><description><![CDATA[<p>Hi. Ich bin mir nicht sicher, ob der Titel richtig gewählt ist, aber gut...</p>
<p>Also, ich möchte eine Struktur namens <code>sockaddr_in</code> in einer Klasse als &quot;private&quot; deklarieren und von <code>sockaddr_in</code> in <code>sockaddr*</code> casten (in der Parameterliste der Methode).</p>
<p>Das Casten funktioniert in der main() Funktion - wenn die Struktur auch in ihr deklariert ist - auch prächtig, aber in Parameterlisten von Methoden scheint das nicht gerade vergleichbar einfach zu sein.<br />
Ich habe es mittels <code>dynamic_cast</code> und dem C-Castoprator <code>()</code> versucht, aber beide Versuche schlugen fehl.</p>
<p>Hat jemand einen Tip für mich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246947/probleme-beim-casting-von-struktur-in-klassen-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 19:25:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246947.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Aug 2009 23:48:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 21:18:09 GMT]]></title><description><![CDATA[<p>Hi. Ich bin mir nicht sicher, ob der Titel richtig gewählt ist, aber gut...</p>
<p>Also, ich möchte eine Struktur namens <code>sockaddr_in</code> in einer Klasse als &quot;private&quot; deklarieren und von <code>sockaddr_in</code> in <code>sockaddr*</code> casten (in der Parameterliste der Methode).</p>
<p>Das Casten funktioniert in der main() Funktion - wenn die Struktur auch in ihr deklariert ist - auch prächtig, aber in Parameterlisten von Methoden scheint das nicht gerade vergleichbar einfach zu sein.<br />
Ich habe es mittels <code>dynamic_cast</code> und dem C-Castoprator <code>()</code> versucht, aber beide Versuche schlugen fehl.</p>
<p>Hat jemand einen Tip für mich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754876</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Tue, 04 Aug 2009 21:18:09 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 01:02:56 GMT]]></title><description><![CDATA[<p>Hier meine Klasse:</p>
<p>PS.: Durchgehend großgeschriebene Kommentare sollen mein Anliegen verdeutlichen.</p>
<p><strong>SERVER_H:</strong></p>
<pre><code class="language-cpp">#ifndef _SERVER_
#define _SERVER_
#include &lt;iostream&gt;
#include &lt;winsock.h&gt;

using namespace std;

class SERVER
{
private:
	WSADATA wsa;
        // HIER HÄTTE ICH GERNE DIE DEKLARATION struct sockaddr_in srv, cli;
public:	
	SOCKET s, c;
	int cli_size;
	SERVER();
	~SERVER();
	bool sockInit();
	bool buildSock();
	bool zuhoeren();
};
#endif
</code></pre>
<p><strong>SERVER_CPP:</strong></p>
<pre><code class="language-cpp">#include &quot;SERVER.h&quot;

SERVER::SERVER() 
{}
SERVER::~SERVER()
{
	closesocket(s);
}
// UND HIER SOLLTE DIE DEFINITION EINER METHODE ZUR UEBERNAHME DER AUFGABE HIN, 
//DIE ICH - MANGELS PROGRAMMIERERFAHRUNG - IN MAIN GELOEST HABE. SIEHE NAECHSTE ZEILEN
//srv.sin_addr.s_addr = INADDR_ANY;
//srv.sin_port = htons( (unsigned short int) atol(argv[1]));
//srv.sin_family = AF_INET;
bool SERVER::sockInit()
{
		    /* initialize windows sockets */
    if (WSAStartup(MAKEWORD(1, 1), &amp;wsa))
    {
        cout &lt;&lt; &quot;WSAStartup() failed: &quot; &lt;&lt; (unsigned long)GetLastError() &lt;&lt; endl;
        return EXIT_FAILURE;
    }
	cli_size = sizeof(sockaddr_in);
	return true;
}

bool SERVER::buildSock()
{
	s = socket(AF_INET, SOCK_STREAM, 0);
	if (s == -1)
	{
		cerr &lt;&lt; &quot;socket() failed&quot; &lt;&lt; endl;
	}
	return true;
}
//[...]

int main(int argc, char *argv[])
{
	long a;
	struct sockaddr_in srv, cli;
	SERVER ser;
	ser.sockInit();
        //[...]
	srv.sin_addr.s_addr = INADDR_ANY;
	srv.sin_port = htons( (unsigned short int) atol(argv[1]));
	srv.sin_family = AF_INET;
	if (bind(ser.s, (struct sockaddr*)&amp;srv, sizeof(srv)) == -1) // &lt;---- HIER HABE ICH ES NUN UMSTAENDLICH 
// LOESEN MUESSEN, DA DAS CASTEN IN DER KLASSE NICHT FUNKTIONIERT HAT
//[...]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1754884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754884</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Tue, 04 Aug 2009 01:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 04:47:46 GMT]]></title><description><![CDATA[<p>Zeig mal wie du das casten versucht hast. Und &quot;funktioniert nicht&quot; ist keine wirkliche Fehlermeldung. Schreib also bitte die Versuche auf die du schon hattest und welche Fehlermeldungen dabei rauskommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754895</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 04 Aug 2009 04:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 05:27:11 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p>Das Casten funktioniert in der main() Funktion - wenn die Struktur auch in ihr deklariert ist - auch prächtig, aber in Parameterlisten von Methoden scheint das nicht gerade vergleichbar einfach zu sein.</p>
</blockquote>
<p>Wie meinst du das? Also in der Parameterliste einer Funktion/Methode kannst du natürlich nicht explizit casten (wäre ja auch Quatsch), das wird höchstens (eventuell) implizit gemacht, z.B. wenn du für einen long-Parameter einen int.Wert übergibst. Wenn du an deine Methode eine Variable vom 'falschen' Typ bekommst, kannst du sie aber innerhalb der Methode casten (wenn das so sinnvoll ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754899</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 04 Aug 2009 05:27:11 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 06:32:28 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>skullyan schrieb:</p>
<blockquote>
<p>Das Casten funktioniert in der main() Funktion - wenn die Struktur auch in ihr deklariert ist - auch prächtig, aber in Parameterlisten von Methoden scheint das nicht gerade vergleichbar einfach zu sein.</p>
</blockquote>
<p>Wie meinst du das? Also in der Parameterliste einer Funktion/Methode kannst du natürlich nicht explizit casten (wäre ja auch Quatsch), das wird höchstens (eventuell) implizit gemacht, z.B. wenn du für einen long-Parameter einen int.Wert übergibst. Wenn du an deine Methode eine Variable vom 'falschen' Typ bekommst, kannst du sie aber innerhalb der Methode casten (wenn das so sinnvoll ist).</p>
</blockquote>
<p>Stimmt auch. Das bringt mich auf eine Idee.<br />
<code>this-&gt;(sockaddr*)srv</code></p>
<p>Kann ich das so innerhalb einer Methode einer Subroutine übergeben?<br />
Hier habe ich es in der main Funktion ja auch gemacht:</p>
<p><code>bind(ser.s, (struct sockaddr*)&amp;srv, sizeof(srv))</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754908</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Tue, 04 Aug 2009 06:32:28 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 06:32:22 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p><code>this-&gt;(sockaddr*)srv</code></p>
</blockquote>
<p>Du meinst wohl eher (sockaddr*)this-&gt;srv ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754909</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 04 Aug 2009 06:32:22 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 06:33:08 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>skullyan schrieb:</p>
<blockquote>
<p><code>this-&gt;(sockaddr*)srv</code></p>
</blockquote>
<p>Du meinst wohl eher (sockaddr*)this-&gt;srv ?</p>
</blockquote>
<p>Ja genau, ist das machbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754910</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Tue, 04 Aug 2009 06:33:08 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 06:42:40 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p>_matze schrieb:</p>
<blockquote>
<p>skullyan schrieb:</p>
<blockquote>
<p><code>this-&gt;(sockaddr*)srv</code></p>
</blockquote>
<p>Du meinst wohl eher (sockaddr*)this-&gt;srv ?</p>
</blockquote>
<p>Ja genau, ist das machbar?</p>
</blockquote>
<p>Wenn der Cast bei der Übergabe klappt, warum sollte er 'dahinter' nicht auch klappen? Probier es doch einfach mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1754913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1754913</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 04 Aug 2009 06:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Casting von Struktur in Klassen [gelöst] on Tue, 04 Aug 2009 21:17:34 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>skullyan schrieb:</p>
<blockquote>
<p>_matze schrieb:</p>
<blockquote>
<p>skullyan schrieb:</p>
<blockquote>
<p><code>this-&gt;(sockaddr*)srv</code></p>
</blockquote>
<p>Du meinst wohl eher (sockaddr*)this-&gt;srv ?</p>
</blockquote>
<p>Ja genau, ist das machbar?</p>
</blockquote>
<p>Wenn der Cast bei der Übergabe klappt, warum sollte er 'dahinter' nicht auch klappen? Probier es doch einfach mal.</p>
</blockquote>
<p>Jo, geht. Danke!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1755394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1755394</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Tue, 04 Aug 2009 21:17:34 GMT</pubDate></item></channel></rss>