<?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[Union, welches Member ist gesetzt?]]></title><description><![CDATA[<p>Hi<br />
gibt es eine Möglichkeit herauszufinden, welches Member einer Union gesetzt ist außer über sizeof() die Größe der Union zu testen und daraus Rückschlüsse zu ziehen? Nehmen z.B. die anderen Member den Wert 0 an oder so? Oder gibt es eine Funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186331/union-welches-member-ist-gesetzt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 08:45:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186331.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jul 2007 15:43:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 15:43:40 GMT]]></title><description><![CDATA[<p>Hi<br />
gibt es eine Möglichkeit herauszufinden, welches Member einer Union gesetzt ist außer über sizeof() die Größe der Union zu testen und daraus Rückschlüsse zu ziehen? Nehmen z.B. die anderen Member den Wert 0 an oder so? Oder gibt es eine Funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320279</guid><dc:creator><![CDATA[Amateur]]></dc:creator><pubDate>Sat, 07 Jul 2007 15:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 16:08:58 GMT]]></title><description><![CDATA[<p>Auch mit sizeof geht das nicht.<br />
Eine union ist immer so groß wie ihr größtes Member,<br />
da alle Member der union auf demselben Speicherplatz stehn.<br />
Wenn du dir also nicht innerhalb des Programms ein Protokoll<br />
machst welche Variabel der union gesetzt ist hast du keine Möglichkeit<br />
das herauszufinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320289</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Sat, 07 Jul 2007 16:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 19:11:09 GMT]]></title><description><![CDATA[<p>nicht umsonst finden unions begrenzte anwendung. wenn man z.b. nen int und nen double in nen union klatscht, bekommt man sehr wahrscheinlich nur blödsinn heraus, wenn man einen der beiden mit nem wert füllt und den anderen ausliest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320365</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 07 Jul 2007 19:11:09 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 19:23:54 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>nicht umsonst finden unions begrenzte anwendung.</p>
</blockquote>
<p>Verwunderlich, da es doch der <strong>Zweck</strong> von unions ist, ein und denselben Speicherbereich mal so, mal anders zu interpretieren...</p>
<p>greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320370</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 07 Jul 2007 19:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 19:27:16 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>thordk schrieb:</p>
<blockquote>
<p>nicht umsonst finden unions begrenzte anwendung.</p>
</blockquote>
<p>Verwunderlich, da es doch der <strong>Zweck</strong> von unions ist, ein und denselben Speicherbereich mal so, mal anders zu interpretieren...</p>
<p>greetz, Swordfish</p>
</blockquote>
<p>und genau das ist ja auch der grund, warum sie so selten anwendung finden. speicherbereich &quot;mal so und mal so&quot; zu interpretieren ist ne c/c++ eigenart. die meisten anderen sprachen setzen auf typsicherheit und lassen sowas von vornherein gar nicht zu.</p>
<p>es gibt durchaus trifftige gründe mal nen union einzusetzen, aber diese sind selten. mir fällt z.b. nicht ein problem ein, für das man unbedingt unions einsetzen müsste. und selbst für solche, in denen unions &quot;praktisch&quot; sind, würd ich anderen varianten den vorzug geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320371</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 07 Jul 2007 19:27:16 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 21:01:52 GMT]]></title><description><![CDATA[<p>boost::variant&lt;&gt; ist eine typsichere &quot;union&quot;, die auch Klassen als Element verkraftet.</p>
<p>Ansonsten sowas:</p>
<pre><code class="language-cpp">struct my_variant {
  enum { is_int, is_double } kind;
  union {
    int int_value;
    double double_value;
  } x;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1320420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320420</guid><dc:creator><![CDATA[Mr. N]]></dc:creator><pubDate>Sat, 07 Jul 2007 21:01:52 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sat, 07 Jul 2007 22:12:57 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>und genau das ist ja auch der grund, warum sie so selten anwendung finden. speicherbereich &quot;mal so und mal so&quot; zu interpretieren ist ne c/c++ eigenart. die meisten anderen sprachen setzen auf typsicherheit und lassen sowas von vornherein gar nicht zu.</p>
</blockquote>
<p>Die &quot;meisten anderen Sprachen&quot; schließen ja auch nicht alle Anwendungsbereich von C, C++ ab.</p>
<p>thordk schrieb:</p>
<blockquote>
<p>es gibt durchaus trifftige gründe mal nen union einzusetzen, aber diese sind selten. mir fällt z.b. nicht ein problem ein, für das man unbedingt unions einsetzen müsste. und selbst für solche, in denen unions &quot;praktisch&quot; sind, würd ich anderen varianten den vorzug geben.</p>
</blockquote>
<p>Tagged Unions wären durchaus höchst interessant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320443</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Sat, 07 Jul 2007 22:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 10:56:47 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>nicht umsonst finden unions begrenzte anwendung. wenn man z.b. nen int und nen double in nen union klatscht, bekommt man sehr wahrscheinlich nur blödsinn heraus, wenn man einen der beiden mit nem wert füllt und den anderen ausliest.</p>
</blockquote>
<p>Was man dabei herausbekommt, ist undefiniertes Verhalten. Unions sind keine &quot;Cast-Maschine&quot; sondern Platz-Spar-Dinger. Ganz so lässig geht C++ mit Typen auch nicht um.</p>
<p>Swordfish schrieb:</p>
<blockquote>
<p>thordk schrieb:</p>
<blockquote>
<p>nicht umsonst finden unions begrenzte anwendung.</p>
</blockquote>
<p>Verwunderlich, da es doch der <strong>Zweck</strong> von unions ist, ein und denselben Speicherbereich mal so, mal anders zu interpretieren...</p>
</blockquote>
<p>Richtig. Allerdings nur in einem wohldefinierten Rahmen. Wer nen int reinschreibt, darf auch nur nen int auslesen.</p>
<blockquote>
<p>es gibt durchaus trifftige gründe mal nen union einzusetzen, aber diese sind selten. mir fällt z.b. nicht ein problem ein, für das man unbedingt unions einsetzen müsste. und selbst für solche, in denen unions &quot;praktisch&quot; sind, würd ich anderen varianten den vorzug geben.</p>
</blockquote>
<p><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="😕"
    /> Warum etwas anderes verwenden, wenn das Vorhandene bereits praktisch ist? Das Problem mit unions ist doch vielmehr, dass sie so selten praktisch sind. Denn meistens will man Tagged Unions und nicht-triviale udts in einer Union. Wenn beides ncht der Fall ist (weil sich der Inhalt der Union z.B. implizit ergibt und man mit PODs gut hinkommt), was spricht dann gegen die Anwendung einer Union?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320593</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sun, 08 Jul 2007 10:56:47 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 11:25:21 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Warum etwas anderes verwenden, wenn das Vorhandene bereits praktisch ist? Das Problem mit unions ist doch vielmehr, dass sie so selten praktisch sind. Denn meistens will man Tagged Unions und nicht-triviale udts in einer Union. Wenn beides ncht der Fall ist (weil sich der Inhalt der Union z.B. implizit ergibt und man mit PODs gut hinkommt), was spricht dann gegen die Anwendung einer Union?</p>
</blockquote>
<p>Könntest du das bitte noch einmal vernünftig in deutscher Sprache formulieren ?<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320611</guid><dc:creator><![CDATA[Please use German]]></dc:creator><pubDate>Sun, 08 Jul 2007 11:25:21 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 12:22:58 GMT]]></title><description><![CDATA[<p>Please use German schrieb:</p>
<blockquote>
<p>Könntest du das bitte noch einmal vernünftig in deutscher Sprache formulieren ?</p>
</blockquote>
<p>Ist halt Fachsprache.</p>
<p>Tagged Union = das, was der Fragesteller wollte.<br />
POD = plain old data, vereinfacht &quot;alles, was keine Klasse ist&quot;<br />
nicht-trivialer UDT = (user-defined type), das Gegenteil eines POD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320662</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 08 Jul 2007 12:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 13:10:44 GMT]]></title><description><![CDATA[<p>Ist das Tutorial von Shade of Mine dann in diesem Punkt falsch?</p>
<p><a href="http://tutorial.schornboeck.net/union.htm" rel="nofollow">http://tutorial.schornboeck.net/union.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320721</guid><dc:creator><![CDATA[ot]]></dc:creator><pubDate>Sun, 08 Jul 2007 13:10:44 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 13:17:08 GMT]]></title><description><![CDATA[<p>ot schrieb:</p>
<blockquote>
<p>Ist das Tutorial von Shade of Mine dann in diesem Punkt falsch?</p>
<p><a href="http://tutorial.schornboeck.net/union.htm" rel="nofollow">http://tutorial.schornboeck.net/union.htm</a></p>
</blockquote>
<p>In welchem Punkt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320724</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 08 Jul 2007 13:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 13:23:44 GMT]]></title><description><![CDATA[<p>Also ich meine das letzte Beispiel auf der Seite. Es wurde ja gesagt das man nur den Member auslesen darf den man zuletzt geschrieben hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320728</guid><dc:creator><![CDATA[ot]]></dc:creator><pubDate>Sun, 08 Jul 2007 13:23:44 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Sun, 08 Jul 2007 13:32:07 GMT]]></title><description><![CDATA[<p>ot schrieb:</p>
<blockquote>
<p>Also ich meine das letzte Beispiel auf der Seite. Es wurde ja gesagt das man nur den Member auslesen darf den man zuletzt geschrieben hat.</p>
</blockquote>
<p>Nein, Du darfst machen, was Du willst. Nur die Sinnhaftigkeit davon kann man in Frage stellen und in seinem Tutorial weist weist Shade ja auch darauf hin, dass dieser Beispielcode nur unter gewissen Rahmenbedingungen sinnvoll ist; nämlich dann, wenn sich ein int in vier Bytes aufgliedert und ein char gleich einem Byte ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1320731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1320731</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sun, 08 Jul 2007 13:32:07 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Mon, 09 Jul 2007 13:15:44 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Nein, Du darfst machen, was Du willst.</p>
</blockquote>
<p>Nicht wenn du im Rahmen des Standards bleiben willst. Dieser ist in diesem Punkt sehr klar: du darfst nur auf das Element lesend zugreifen, dass als letztes geschrieben wurde. Andernfalls hat das Programm undefiniertes Verhalten und is damit kein legales C++ (Es gibt zwei kleine Ausnahmen bzgl. unsigned chars und PODs mit gleicher &quot;initialer Sequenz&quot;). Das Beispiel in Shades Tutorial ist kein gültiges Standard-C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1321521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1321521</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Mon, 09 Jul 2007 13:15:44 GMT</pubDate></item><item><title><![CDATA[Reply to Union, welches Member ist gesetzt? on Mon, 09 Jul 2007 13:22:35 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>Nein, Du darfst machen, was Du willst.</p>
</blockquote>
<p>Dieser [Standard] ist in diesem Punkt sehr klar: du darfst nur auf das Element lesend zugreifen, dass als letztes geschrieben wurde.</p>
</blockquote>
<p>Ups, dann nehme ich alles zurück und behaupte das Gegenteil.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1321532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1321532</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 09 Jul 2007 13:22:35 GMT</pubDate></item></channel></rss>