<?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[Array in Initialisierungsliste befüllen]]></title><description><![CDATA[<p>Hallo alle miteinander.</p>
<p>Kann mir vielleicht jemand erklären warum das hier nicht klappt?</p>
<pre><code class="language-cpp">struct triangle
{
  triangle(int a, int b, int c) : vertices({a, b, c}) {}
  ~triangle() {
    delete[] vertices;
  }
  int vertices[3];
};
</code></pre>
<p>Der stürzt beim Delete mit irgendeiner Assertion ab.<br />
Hab aber nicht genau rausgefunden was da los ist.</p>
<p>Aufgerufen wird das ganze von</p>
<pre><code class="language-cpp">std::vector&lt;triangle&gt; triangles;
triangles.push_back(triangle(a, b, c));
</code></pre>
<p>Konstruktor und Destruktor werden beide bei push_back aufgerufen.</p>
<p>Ach ja, das Array in der Initialisierungsliste befüllen geht nur mit std=c++0x.<br />
Wenn ich das ohne den neuen Standard mache, muss ich im Konstruktorrumpf das Array befüllen. Der fehler ist dann aber der gleiche.</p>
<p>Vielen Dank schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272545/array-in-initialisierungsliste-befüllen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 20:25:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272545.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Aug 2010 15:13:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Thu, 19 Aug 2010 15:13:03 GMT]]></title><description><![CDATA[<p>Hallo alle miteinander.</p>
<p>Kann mir vielleicht jemand erklären warum das hier nicht klappt?</p>
<pre><code class="language-cpp">struct triangle
{
  triangle(int a, int b, int c) : vertices({a, b, c}) {}
  ~triangle() {
    delete[] vertices;
  }
  int vertices[3];
};
</code></pre>
<p>Der stürzt beim Delete mit irgendeiner Assertion ab.<br />
Hab aber nicht genau rausgefunden was da los ist.</p>
<p>Aufgerufen wird das ganze von</p>
<pre><code class="language-cpp">std::vector&lt;triangle&gt; triangles;
triangles.push_back(triangle(a, b, c));
</code></pre>
<p>Konstruktor und Destruktor werden beide bei push_back aufgerufen.</p>
<p>Ach ja, das Array in der Initialisierungsliste befüllen geht nur mit std=c++0x.<br />
Wenn ich das ohne den neuen Standard mache, muss ich im Konstruktorrumpf das Array befüllen. Der fehler ist dann aber der gleiche.</p>
<p>Vielen Dank schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942068</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:13:03 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Thu, 19 Aug 2010 15:17:57 GMT]]></title><description><![CDATA[<p>Das delete ist da ja auch falsch!<br />
Delete rufst du nur auf, wenn du irgendwo Speicher mit new angefordert hast!<br />
Hier ist der Speicher automatisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942069</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Thu, 19 Aug 2010 15:18:35 GMT]]></title><description><![CDATA[<p>delete <strong>nur</strong> für Sachen die <strong>du</strong> mit <strong>new</strong> angefordert hast.</p>
<p>edit: Zu langsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942070</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:18:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Thu, 19 Aug 2010 15:20:12 GMT]]></title><description><![CDATA[<p>Du hast den Speicher nicht mit dem Operator <code>new[]</code> angefordert. Deshalb musst du dich nicht selbst darum kümmern, ihn mit <code>delete[]</code> wieder freizugeben. <code>vertices</code> wird automatisch zerstört, wenn ein Objekt von <code>triangle</code> zerstört wird.</p>
<p>Auch Edit: Auch zu langsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942071</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:20:12 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Thu, 19 Aug 2010 15:22:13 GMT]]></title><description><![CDATA[<p>Wie dumm von mir ^^. Vielen Dank.</p>
<p>Aber stimmt das, dass man mit dem neuen Standard nur Arrays in der Elementliste initialisieren kann wie oben beschrieben?</p>
<p>Der Compiler meinte da nämlich:</p>
<p>warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942072</guid><dc:creator><![CDATA[Max3000]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:22:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Thu, 19 Aug 2010 15:29:11 GMT]]></title><description><![CDATA[<p>Wenn man den Satz etwas umstellt, hast du Recht (und dein Compiler sowieso):</p>
<p>Nur mit dem neuen Standard kann man Arrays in der Elementliste so wie beschrieben initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942076</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 19 Aug 2010 15:29:11 GMT</pubDate></item><item><title><![CDATA[Reply to Array in Initialisierungsliste befüllen on Fri, 20 Aug 2010 14:19:19 GMT]]></title><description><![CDATA[<p>übrigens dann ohne die runden klammern.<br />
ohne den neuen standard musst du das aber auf *jeden* fall in einer schleife machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1942448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1942448</guid><dc:creator><![CDATA[kunststudent]]></dc:creator><pubDate>Fri, 20 Aug 2010 14:19:19 GMT</pubDate></item></channel></rss>