<?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[struct zwischen Klassen weitergeben]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich habe mal wieder ein Problem:<br />
Ich habe die Klassen:<br />
- Time.h / Time.cpp<br />
- Forwarder.h / Forwarder.cpp<br />
- Receiver.h / Receiver.cpp</p>
<p>In Time.cpp habe ich ein struct namens Message gemacht.<br />
`struct Message{</p>
<pre><code>  int ID;

  char* Type;
</code></pre>
<p>};`</p>
<p>Wie kann ich dieses struct an die Klasse Forwarder schicken?<br />
Habe<br />
`Message message2;</p>
<p><a href="http://message2.ID" rel="nofollow">message2.ID</a> = 7;</p>
<p>message2.Type = &quot;lol&quot;;<code>**-</code>Forwarder(*message2);` **- in Time und</p>
<p>**- <code>Forwarder::Forwarder(struct Message *message2)</code> **- in Forwarder,aber das funktioniert nicht.</p>
<p>MFG CplusplusNeuling</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/335772/struct-zwischen-klassen-weitergeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 20 Apr 2026 08:40:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335772.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Dec 2015 15:44:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 15:56:01 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich habe mal wieder ein Problem:<br />
Ich habe die Klassen:<br />
- Time.h / Time.cpp<br />
- Forwarder.h / Forwarder.cpp<br />
- Receiver.h / Receiver.cpp</p>
<p>In Time.cpp habe ich ein struct namens Message gemacht.<br />
`struct Message{</p>
<pre><code>  int ID;

  char* Type;
</code></pre>
<p>};`</p>
<p>Wie kann ich dieses struct an die Klasse Forwarder schicken?<br />
Habe<br />
`Message message2;</p>
<p><a href="http://message2.ID" rel="nofollow">message2.ID</a> = 7;</p>
<p>message2.Type = &quot;lol&quot;;<code>**-</code>Forwarder(*message2);` **- in Time und</p>
<p>**- <code>Forwarder::Forwarder(struct Message *message2)</code> **- in Forwarder,aber das funktioniert nicht.</p>
<p>MFG CplusplusNeuling</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478964</guid><dc:creator><![CDATA[CplusplusNeuling]]></dc:creator><pubDate>Thu, 10 Dec 2015 15:56:01 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 15:45:48 GMT]]></title><description><![CDATA[<p>Und Deine Frage ist...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478965</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Thu, 10 Dec 2015 15:45:48 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 15:50:32 GMT]]></title><description><![CDATA[<p>sorry schickte nachricht ab bevor ich fertig war <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2478966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478966</guid><dc:creator><![CDATA[CplusplusNeuling]]></dc:creator><pubDate>Thu, 10 Dec 2015 15:50:32 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 15:50:33 GMT]]></title><description><![CDATA[<p>wahrscheinlich froward declaration</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478967</guid><dc:creator><![CDATA[forw_]]></dc:creator><pubDate>Thu, 10 Dec 2015 15:50:33 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 16:01:35 GMT]]></title><description><![CDATA[<p>Funktioniert nicht - aha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478970</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 10 Dec 2015 16:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 18:36:23 GMT]]></title><description><![CDATA[<p>Du dereferenzierst in deinem Beispiel eine nicht-Pointer variable.</p>
<p>Struct keyword kannste in c++ weglassen bei Typ angaben.</p>
<p>Poste die Fehlermessage - das ist was der Rest dir hier sagen will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478988</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Thu, 10 Dec 2015 18:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 18:57:57 GMT]]></title><description><![CDATA[<p>Das ist ja mein Problem. Es kommt <strong>keine</strong> Fehlermeldung, es funktioniert nur nicht. Vielleicht beschreibe ich es nochmal was ich gemacht habe.</p>
<p>Meine Main in Klasse Time:</p>
<pre><code>struct Message{
	int ID;
	char Type[20];
}message2;

void main() {
        Forwarder(*message2);
	system(&quot;PAUSE&quot;);
}
</code></pre>
<p>Meine Klasse Forwarder (quasi Client):</p>
<pre><code>Forwarder::Forwarder(struct Message * message2) {

	//Initialise winsock
	...
	//create socket
	...
	//setup address structure
	...
	//start communication
	while (1)
	{
		//send the message2
		if (sendto(s, message2, strlen(message2), 0, (struct sockaddr *) &amp;si_other, slen) == SOCKET_ERROR)
		{
                ...			
		}
                ... (Recieve Message = Antwort ob Nachricht ankam)
	}
	closesocket(s);
	WSACleanup();
}
</code></pre>
<p>Leider kommt keine Fehlermeldung, der Client startet nur nicht. Ohne Übergabe des structs startet er.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478989</guid><dc:creator><![CDATA[CplusplusNeuling]]></dc:creator><pubDate>Thu, 10 Dec 2015 18:57:57 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 19:21:55 GMT]]></title><description><![CDATA[<p>Sicher dass der Compiler keine Fehlermeldung produziert? Ich kann ich mir kaum vorstellen, dass der Zeile 7 in deiner main-Datei einfach so kommentarlos schluckt.<br />
Eine übersehene Fehlermeldung des Compilers wäre übrigens auch eine plausible erklärung, weshalb der Client nicht startet.</p>
<p>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2478990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2478990</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Thu, 10 Dec 2015 19:21:55 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 20:07:40 GMT]]></title><description><![CDATA[<p>Hier ein Screenshot bei der Ausführung.<br />
Lediglich die Ausgaben der ID und des Typs &quot;lol&quot; sind zu sehen. Diese geschehen vor dem Aufruf des Forwarders. Es gibt zwar eine Warning, aber eben keine Fehlermeldung.</p>
<p><a href="http://www.fotos-hochladen.net/view/forwardernyqt045u91.jpg" rel="nofollow"></a><a href="http://www.fotos-hochladen.net/thumbnail/forwardernyqt045u91_thumb.jpg" rel="nofollow">http://www.fotos-hochladen.net/thumbnail/forwardernyqt045u91_thumb.jpg</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479000</guid><dc:creator><![CDATA[CplusplusNeuling]]></dc:creator><pubDate>Thu, 10 Dec 2015 20:07:40 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 20:23:30 GMT]]></title><description><![CDATA[<p>Finnegan schrieb:</p>
<blockquote>
<p>Sicher dass der Compiler keine Fehlermeldung produziert? Ich kann ich mir kaum vorstellen, dass der Zeile 7 in deiner main-Datei einfach so kommentarlos schluckt.</p>
</blockquote>
<p>Dachte ich mir auch gerade. Nachdem das aber zu compilieren scheint habe ich es mal selbst ausprobiert. Die Zeile <code>Forwarder(*message2);</code> ruft gar keinen Konstruktor auf, sondern deklariert eine Variable! Es ist ein Pointer auf Forwarder mit dem Namen message2 (wenn man sich die unnötigen Klammern wegdenkt sieht man es).</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/32579">@CplusplusNeuling</a>:<br />
Mach mal aus dem <code>'*'</code> mal ein <code>'&amp;'</code> damit du deinen Konstruktor Aufruf kriegst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479002</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Thu, 10 Dec 2015 20:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 20:35:54 GMT]]></title><description><![CDATA[<p>Und n Bezeichner?</p>
<p>Ist es nicht definiert statt deklariert? (Rein aus Interesse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479003</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Thu, 10 Dec 2015 20:35:54 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Thu, 10 Dec 2015 20:43:28 GMT]]></title><description><![CDATA[<p>Was für ein Bezeichner?</p>
<p>Und ja sollte definiert heißen, nicht deklariert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479004</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Thu, 10 Dec 2015 20:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Fri, 11 Dec 2015 02:28:00 GMT]]></title><description><![CDATA[<p>sebi707 schrieb:</p>
<blockquote>
<p>... Die Zeile <code>Forwarder(*message2);</code> ruft gar keinen Konstruktor auf, sondern deklariert eine Variable! ...</p>
</blockquote>
<p>Ups! Das hätte ich jetzt nicht erwartet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> ... aber überraschend ist es bei der Sprache nicht. Das ist jetzt auch wieder so ein Ding wo man sich denkt, dass Uniform Initalization eigentlich eine gar nicht mal so verkehrte Idee ist <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>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479043</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Fri, 11 Dec 2015 02:28:00 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Fri, 11 Dec 2015 04:46:33 GMT]]></title><description><![CDATA[<p><em>Falls</em> du tatsächlich mal ein allein stehendes, temporäres Objekt erstellen möchtest (auch bekannt als &quot;meine Klasse sollte eigentlich eine freie Funktion sein&quot;-Syndrom), das als Konstruktorparameter einen dereferenzierten Zeiger nimmt, kannst du dies auf folgende Arten und Weisen erreichen:<br />
a) Uniform initialization, wie von Finnegan erwähnt:</p>
<pre><code>Foo{*bar};
</code></pre>
<p>b) Vor C++11 kann man mit ein paar Klammern Klarheit schaffen</p>
<pre><code>(Foo(*bar));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2479047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479047</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 11 Dec 2015 04:46:33 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Fri, 11 Dec 2015 11:44:25 GMT]]></title><description><![CDATA[<p>Danke für eure Antworten.<br />
Mit</p>
<pre><code>Forwarder{ &amp;message2 };
</code></pre>
<p>in Time startet jetzt der Client, leider kann ich mit den Eingaben des structs nicht arbeiten.</p>
<pre><code>Forwarder{ *message2 };
</code></pre>
<p>kommt Fehler: Kein &quot;*&quot;-Operator stimmt mit diesen Operanden überein. Operandentypen sind: *Message.</p>
<p>Forwarder:</p>
<pre><code>...
Forwarder::Forwarder(struct Message * message2) {

	cout &lt;&lt; &amp;message2 &lt;&lt; endl;  // Ausgabe: 0041FDB0
	cout &lt;&lt; message2 &lt;&lt; endl;	// Ausgabe: 0133C144
	cout &lt;&lt;  message2.ID;		// Fehler:	Ausdrck muss ein Klassentyp aufweisen
	cout &lt;&lt; message2.Type;		// Fehler:	Ausdrck muss ein Klassentyp aufweisen
...
</code></pre>
<p>[code]</p>
<p>Ich müsste das struct eigentlich an Receiver(Server) weiterleiten und erst dort damit arbeiten. Aber wenn ich nicht auf die Informationen des structs zugreifen kann nutzt das nichts. Muss ich da was anderes machen?</p>
<p>(Warum ich so trouble mit Pointer und Co habe: Leider lernte ich C++ nicht, muss aber diese Sprache hierfür nutzen. Java wäre mir lieber)</p>
<p>Gibt es ein allgemeines Beispiel wie ich ein struct in einer Klasse definiere und es dann an andere Klasse immer weiter geben kann um in der Zielklasse damit zu arbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479081</guid><dc:creator><![CDATA[CplusplusNeuling]]></dc:creator><pubDate>Fri, 11 Dec 2015 11:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to struct zwischen Klassen weitergeben on Fri, 11 Dec 2015 12:09:44 GMT]]></title><description><![CDATA[<p>Wenn du eine Klasse oder Struktur in verschiedenen Übersetzungseinheiten (ÜE) benötigst, so muß diese in einer gemeinsamen Headerdatei definiert sein.</p>
<p>Statt des Zeigers kannst du auch einfach eine Referenz verwenden (das kommt der Java-Syntax näher):</p>
<pre><code class="language-cpp">Forwarder::Forwarder(Message &amp; message)
{
   cout &lt;&lt; message.ID;
}
</code></pre>
<p>PS: &quot;strlen(message2)&quot; ist Unsinn! Du willst wahrscheinlich</p>
<pre><code class="language-cpp">sizeof(message2)
</code></pre>
<p>(also die Größe der Struktur in Bytes)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2479090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2479090</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 11 Dec 2015 12:09:44 GMT</pubDate></item></channel></rss>