<?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[Ist ein CArray aus structs, welches ein union hat, bedenklich]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist folgender Code falsch:</p>
<pre><code class="language-cpp">struct Foo
{
  BOOL is_foo;
  union
  {
    struct // if (is_foo)
    {
      int foo_id;
      CString foo_lbl;
    };
    struct // if (!is_foo)
    {
      int bar_id;
      CString bar_lbl;
    };
  };
};

CArray&lt;Blubb, Blubb&gt; arr; // liegt auf dem stack
</code></pre>
<p>So bekomme ich einen Zugriffsfehler, wenn arr zersört wird.</p>
<p>So passiert es nicht:</p>
<pre><code class="language-cpp">struct Foo
{
  BOOL is_foo;
  int foo_id;
  CString foo_lbl;
  int bar_id;
  CString bar_lbl;
};

CArray&lt;Blubb, Blubb&gt; arr; // liegt auf dem stack
</code></pre>
<p>Durch das erste Beispiel möchte ich halt in der Struktur Foo Platz sparen. Aber es kommt zu dem genannten Zugriffsfehler. Kennt jemand das Problem? Ist esgrundsätzlich falsch ein CArray aus einer solchen Struktur mit union zu verwenden? Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123810/ist-ein-carray-aus-structs-welches-ein-union-hat-bedenklich</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 18:23:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123810.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Oct 2005 13:20:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:20:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ist folgender Code falsch:</p>
<pre><code class="language-cpp">struct Foo
{
  BOOL is_foo;
  union
  {
    struct // if (is_foo)
    {
      int foo_id;
      CString foo_lbl;
    };
    struct // if (!is_foo)
    {
      int bar_id;
      CString bar_lbl;
    };
  };
};

CArray&lt;Blubb, Blubb&gt; arr; // liegt auf dem stack
</code></pre>
<p>So bekomme ich einen Zugriffsfehler, wenn arr zersört wird.</p>
<p>So passiert es nicht:</p>
<pre><code class="language-cpp">struct Foo
{
  BOOL is_foo;
  int foo_id;
  CString foo_lbl;
  int bar_id;
  CString bar_lbl;
};

CArray&lt;Blubb, Blubb&gt; arr; // liegt auf dem stack
</code></pre>
<p>Durch das erste Beispiel möchte ich halt in der Struktur Foo Platz sparen. Aber es kommt zu dem genannten Zugriffsfehler. Kennt jemand das Problem? Ist esgrundsätzlich falsch ein CArray aus einer solchen Struktur mit union zu verwenden? Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896803</guid><dc:creator><![CDATA[rat_suchender]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:25:57 GMT]]></title><description><![CDATA[<p>Ich denke das wissen die Leute aus dem C++ Unterforum besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896806</guid><dc:creator><![CDATA[.............]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:27:35 GMT]]></title><description><![CDATA[<p>Warum machst nicht einfach ne Struktur die einfach &quot;id&quot; und &quot;lbl&quot; enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896807</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:31:55 GMT]]></title><description><![CDATA[<p>............. schrieb:</p>
<blockquote>
<p>Ich denke das wissen die Leute aus dem C++ Unterforum besser.</p>
</blockquote>
<p>stimmt zwar, heißt aber nicht, dass wir das hier nicht wissen^^</p>
<p>Dein Prob wird sein, dass das CString-Objekt 2 mal freigegeben wird. Unions mit Objekten sind meist auch nicht so wirklich sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896809</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:32:01 GMT]]></title><description><![CDATA[<p>Ich glaube, das Problem ist eher die Kombination aus union und C++-Klasse - der Compiler weiß einfach nicht, ob er beim Zerstören deiner Konstruktion den Destruktor von foo_lbl oder bar_lbl aufrufen soll (im zweiten Quelltext verwendet er beide).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896810</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:35:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9676">@Pellaeon</a>:</p>
<p>Das ist nur gekürzter Pseude-Code. Im richtigen Code haben die structs des unions eine unterschiedliche Anzahl an membern.</p>
<p>Aber ich glaube ich weiss jetzt woran es liegt. Und zwar am CString. Wenn ich CHAR* benutze passiert es nämlich auch nicht. Denn normaleweise beschwert sich ja der Compiler, wenn mam folgendes macht:</p>
<pre><code class="language-cpp">union Bla 
{
  CString str;
  int i;
};
</code></pre>
<p>Der Fehler lautet dann, dass ein union-member keinen Kopierkonstruktor haben darf.<br />
Deswegen denke ich, dass mein Versuch eine üble Umgehung dieses Compilerfehlers ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896813</guid><dc:creator><![CDATA[rat_suchender]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:35:17 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:35:37 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=9713" rel="nofollow">estartu_de</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=1" rel="nofollow">MFC (Visual C++)</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/896814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896814</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:35:37 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:38:25 GMT]]></title><description><![CDATA[<p>Was soll jemand im C++-Forum über CString und CArray wissen. <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/896816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896816</guid><dc:creator><![CDATA[Redhead]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:39:31 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>:</p>
<p>damit bestätigt sich meine Vermutung. Danke.</p>
<p>Jetzt denke ich auch, dass dieser Beitrag eher ins C++-Forum gehört, denn mit std::vector und std::string passiert das gleiche.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896817</guid><dc:creator><![CDATA[rat_suchender]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:41:34 GMT]]></title><description><![CDATA[<p>Redhead schrieb:</p>
<blockquote>
<p>Was soll jemand im C++-Forum über CString und CArray wissen. <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>
</blockquote>
<p>Wo die Klassen herkommen ist doch egal, das Kernproblem geht um Unions</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896821</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:41:34 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 14:01:10 GMT]]></title><description><![CDATA[<p>rat_suchender schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>ist folgender Code falsch:</p>
<pre><code class="language-cpp">struct Foo
{
  BOOL is_foo;
  union
  {
    struct // if (is_foo)
    {
      int foo_id;
      CString foo_lbl;
    };
    struct // if (!is_foo)
    {
      int bar_id;
      CString bar_lbl;
    };
  };
};

CArray&lt;Blubb, Blubb&gt; arr; // liegt auf dem stack
</code></pre>
</blockquote>
<p>Ja, ist er.</p>
<p>Nested Classes in einer anonymen Union sind nicht erlaubt (Standard: 9.5 Cl. 2).</p>
<p>Und dann noch das eigentliche (9.5 Cl. 1)<br />
An object of a class with a nontrivial constructor (12.1), a nontrivial copy constructor (12.8), a nontrivial destructor (12.4), or a nontrivial copy assignment operator (13.5.3, 12.8) cannot be a member of a union, nor can an array of such objects.</p>
<p>Nontrivial bedeutet dabei: selbst implementiert (und damit nicht compiler-generiert) - oder eines in der Klasse enthaltenen Objekte hat einen nicht-trivialen XXX (alle 4 Varianten einsetzen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/896828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896828</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Thu, 20 Oct 2005 14:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ist ein CArray aus structs, welches ein union hat, bedenklich on Thu, 20 Oct 2005 13:53:40 GMT]]></title><description><![CDATA[<p>Pellaeon schrieb:</p>
<blockquote>
<p>Redhead schrieb:</p>
<blockquote>
<p>Was soll jemand im C++-Forum über CString und CArray wissen. <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>
</blockquote>
<p>Wo die Klassen herkommen ist doch egal, das Kernproblem geht um Unions</p>
</blockquote>
<p>So sehe ich das auch. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/896834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/896834</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Thu, 20 Oct 2005 13:53:40 GMT</pubDate></item></channel></rss>