<?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[Frage zu struct]]></title><description><![CDATA[<p>Hallo ist sowas mit struct möglich?</p>
<pre><code class="language-cpp">struct DATEN
{
        string vorname;
        string nachname;
        string ort;
};

DATEN Daten;

vector&lt;string&gt;VecDaten;

for(int i=0;i&lt;sizeof(DATEN)/24;i++)
{
VecDaten.push_back (  was würde hier rein kommen?  );
/*/
Erster Durchlauf: schiebe vorname in vector
Zweiter Durchlauf: schiebe nachname in vector
Dritter Durchlauf: schiebe ort in vector
/*/
}
</code></pre>
<p>Oder muss ich schreiben:</p>
<pre><code class="language-cpp">VecDaten.push_back (vorname);
VecDaten.push_back (nachname);
VecDaten.push_back (ort);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/307531/frage-zu-struct</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 18:01:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/307531.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Aug 2012 09:00:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 09:00:18 GMT]]></title><description><![CDATA[<p>Hallo ist sowas mit struct möglich?</p>
<pre><code class="language-cpp">struct DATEN
{
        string vorname;
        string nachname;
        string ort;
};

DATEN Daten;

vector&lt;string&gt;VecDaten;

for(int i=0;i&lt;sizeof(DATEN)/24;i++)
{
VecDaten.push_back (  was würde hier rein kommen?  );
/*/
Erster Durchlauf: schiebe vorname in vector
Zweiter Durchlauf: schiebe nachname in vector
Dritter Durchlauf: schiebe ort in vector
/*/
}
</code></pre>
<p>Oder muss ich schreiben:</p>
<pre><code class="language-cpp">VecDaten.push_back (vorname);
VecDaten.push_back (nachname);
VecDaten.push_back (ort);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246551</guid><dc:creator><![CDATA[s_tr]]></dc:creator><pubDate>Wed, 29 Aug 2012 09:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 09:02:47 GMT]]></title><description><![CDATA[<p>du willst</p>
<pre><code class="language-cpp">std::vector&lt;DATEN&gt; datenVec;

DATEN neueDaten;
neueDaten.vorname = &quot;hans&quot;;
neueDaten.nachname = &quot;wurst&quot;
neueDaten.ort = &quot;wursthausen&quot;;

datenVec.push_back(neueDaten);
</code></pre>
<p>du könntest dem struct auch einfach einen Konstruktor spendieren, dann ginge sowas:</p>
<pre><code class="language-cpp">datenVec.push_back(DATEN(&quot;hans&quot;, &quot;wurst&quot;, &quot;wursthausen&quot;));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246553</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 29 Aug 2012 09:02:47 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 09:35:33 GMT]]></title><description><![CDATA[<p>Ich hab mich mal für die diese Lösung entschieden da ich dort noch ein paar Implementierungsprobleme habe.</p>
<pre><code class="language-cpp">std::vector&lt;DATEN&gt; datenVec;

DATEN neueDaten;
neueDaten.vorname = &quot;hans&quot;;
neueDaten.nachname = &quot;wurst&quot;
neueDaten.ort = &quot;wursthausen&quot;;

datenVec.push_back(neueDaten);
</code></pre>
<p>Mein Problem ist jetzt die Ausgabe anscheind muss ich dort ja mit Operator Überladung arbeiten.</p>
<p>Weil wenn ich schreibe:</p>
<pre><code class="language-cpp">cout&lt;&lt;datenVec[0];
</code></pre>
<p>Dann sagt mein Compiler: [C++ Fehler] t.cpp(76): E2094 'operator&lt;&lt;' ist im Typ 'ostream' für Argumente des Typs 'DATEN' nicht implementiert</p>
<p>Daher hab ich folgendes gemacht:</p>
<pre><code class="language-cpp">ostream &amp;operator &lt;&lt; ( ostream &amp;os, DATEN &amp;daten )
{

        return os &lt;&lt; daten.vorname &lt;&lt; &quot; &quot;&lt;&lt;daten.nachname &lt;&lt; &quot; &quot;&lt;&lt;daten.ort;
}
</code></pre>
<p>Nur das nützt mir ja jetzt auch nichts, wie kann ich mir jetzt die einzelnen Elemente ausgeben lassen?</p>
<p>Für Element zugriff gibt es ja operator[] aber ich hab kp wie ich das hier verwenden soll in diesem Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246572</guid><dc:creator><![CDATA[s_tr]]></dc:creator><pubDate>Wed, 29 Aug 2012 09:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 09:38:30 GMT]]></title><description><![CDATA[<p>s_tr schrieb:</p>
<blockquote>
<p>Nur das nützt mir ja jetzt auch nichts, wie kann ich mir jetzt die einzelnen Elemente ausgeben lassen?</p>
</blockquote>
<p>meinst du, der Code funktioniert nicht? Oder willst du dir von deinen Daten jeweils nur den Vornamen ausgeben lassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246574</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 29 Aug 2012 09:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 10:10:56 GMT]]></title><description><![CDATA[<p>Funktionieren tut der Code schon ich bekomme alles ausgeben (vorname,nachname und den ort)</p>
<p>Nur ich dachte ich könnte sowas machen:</p>
<pre><code class="language-cpp">cout&lt;&lt;datenVec[0];  // Gibt vorname aus
cout&lt;&lt;datenVec[1];  // Gibt nachname aus
cout&lt;&lt;datenVec[2];  // Gibt ort aus
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246595</guid><dc:creator><![CDATA[s_tr]]></dc:creator><pubDate>Wed, 29 Aug 2012 10:10:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 10:17:54 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cout&lt;&lt;datenVec[0].vorname ;  // Gibt vorname aus
cout&lt;&lt;datenVec[0].nachname ;  // Gibt nachname aus
cout&lt;&lt;datenVec[0].ort;  // Gibt ort aus
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246599</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Aug 2012 10:17:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 10:19:56 GMT]]></title><description><![CDATA[<p>s_tr schrieb:</p>
<blockquote>
<p>Nur ich dachte ich könnte sowas machen:</p>
<pre><code class="language-cpp">cout&lt;&lt;datenVec[0];  // Gibt vorname aus
cout&lt;&lt;datenVec[1];  // Gibt nachname aus
cout&lt;&lt;datenVec[2];  // Gibt ort aus
</code></pre>
</blockquote>
<p>du hast da etwas völlig missverstanden. datenVec ist ein std::vector, der mehrer Instanzen von deinem DATEN-struct enthält. mit datenVec[0] greifst du auf das erste Element zu. Was du willst, ist dann wohl</p>
<pre><code class="language-cpp">cout&lt;&lt;datenVec[0].vorname;  // Gibt vorname aus
cout&lt;&lt;datenVec[0].nachname;  // Gibt nachname aus
cout&lt;&lt;datenVec[0].ort;  // Gibt ort aus
</code></pre>
<p>edit: Mist, hab zu lange fürs Tippen gebraucht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246600</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 29 Aug 2012 10:19:56 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 10:23:07 GMT]]></title><description><![CDATA[<p>Du könntest auch einfach <code>ostream&amp; operator&lt;&lt;(ostream&amp;, const DATEN&amp;)</code> definieren, dann ginge auch</p>
<pre><code class="language-cpp">cout &lt;&lt; datenVec[0]; // rufe die Funktion auf und gib darin Vor-, Nachname und Ort aus
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246602</guid><dc:creator><![CDATA[ostreamer]]></dc:creator><pubDate>Wed, 29 Aug 2012 10:23:07 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 10:39:45 GMT]]></title><description><![CDATA[<p>ostreamer schrieb:</p>
<blockquote>
<p>Du könntest auch einfach <code>ostream&amp; operator&lt;&lt;(ostream&amp;, const DATEN&amp;)</code> definieren, dann ginge auch</p>
</blockquote>
<p>lesen, verstehen, posten</p>
<p>genau das hat er bereits gemacht. Jetzt möchte er die einzelnen Elemente des structs <strong>getrennt</strong> ausgeben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246609</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 29 Aug 2012 10:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 11:53:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;vector&gt;

struct Daten
{
    std::string vorname;
    std::string nachname;
    std::string ort;
};

int main()
{
    std::vector&lt;Daten&gt; VecDaten;
    Daten d = {&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;};
    VecDaten.push_back(d);
}
</code></pre>
<p>Und wenn 'nen halbwegs aktuellen und vernünftigen Compiler hast, kannste auch</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;utility&gt;
#include &lt;vector&gt;

struct Daten
{
    std::string vorname;
    std::string nachname;
    std::string ort;
};

int main()
{
    std::vector&lt;Daten&gt; VecDaten;
    Daten d = {&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;};
    VecDaten.push_back(std::move(d));
}
</code></pre>
<p>schreiben. Das std::move kannst du verwenden, um zu sagen &quot;Der Wert dieser Variable interessiert mich nicht mehr&quot;, was u.U. die eine oder andere Operation beschleunigt. In diesem Fall müssten die Strings nicht in den Vektor kopiert werden. Sie müssten nur &quot;umziehen&quot;. Nach so einer Aktion solltest du nicht erwarten, dass d unverändert bleibt. Allerdings ist der Microsoft-Compiler noch nicht soweit, dass er es in diesem Fall wirklich gebacken bekommt.</p>
<p>Edit: Oops... Es hat sich wohl schon erledigt, mit dem Füllen des Vektors...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246644</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 29 Aug 2012 11:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 12:27:13 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Und wenn 'nen halbwegs aktuellen und vernünftigen Compiler hast, kannste auch</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;utility&gt;
#include &lt;vector&gt;

struct Daten
{
    std::string vorname;
    std::string nachname;
    std::string ort;
};

int main()
{
    std::vector&lt;Daten&gt; VecDaten;
    Daten d = {&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;};
    VecDaten.push_back(std::move(d));
}
</code></pre>
</blockquote>
<p>Wenn man einen halbwegs aktuellen und vernünftigen Compiler hat, schafft man die <code>main()</code> in einer sauberen Zeile:</p>
<pre><code class="language-cpp">int main()
{
    std::vector&lt;Daten&gt; VecDaten{{&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;}};
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Edit: Ich seh schon, macht nicht dasselbe wie deins, hier muss schließlich kopiert werden... initializer_list kann keine RValue-Referenzen aufnehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246665</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 12:27:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 13:56:55 GMT]]></title><description><![CDATA[<p>DER HAMMER <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>
<p>Sone schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Und wenn 'nen halbwegs aktuellen und vernünftigen Compiler hast, kannste auch</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;utility&gt;
#include &lt;vector&gt;

struct Daten
{
    std::string vorname;
    std::string nachname;
    std::string ort;
};

int main()
{
    std::vector&lt;Daten&gt; VecDaten;
    Daten d = {&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;};
    VecDaten.push_back(std::move(d));
}
</code></pre>
</blockquote>
<p>Wenn man einen halbwegs aktuellen und vernünftigen Compiler hat, schafft man die <code>main()</code> in einer sauberen Zeile:</p>
<pre><code class="language-cpp">int main()
{
    std::vector&lt;Daten&gt; VecDaten{{&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;}};
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Edit: Ich seh schon, macht nicht dasselbe wie deins, hier muss schließlich kopiert werden... initializer_list kann keine RValue-Referenzen aufnehmen.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2246704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246704</guid><dc:creator><![CDATA[firfir]]></dc:creator><pubDate>Wed, 29 Aug 2012 13:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 14:27:46 GMT]]></title><description><![CDATA[<p>Allerdings geht dasselbe trotzdem kürzer, weil vector laut Standard eine push_back-Überladung mit RValue-Referenz anbieten muss (siehe N3337, 23.3.6.5, Deklarationen):</p>
<pre><code class="language-cpp">std::vector&lt;Daten&gt; VecDaten;
    VecDaten.push_back({&quot;Heiko&quot;, &quot;Blonder&quot;, &quot;Sachsen&quot;});
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246721</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:27:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 14:27:50 GMT]]></title><description><![CDATA[<p>Ja, das dass geht weiss ich aber ich dachte halt es könnte auch anders gehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">cout&lt;&lt;datenVec[0].vorname;  // Gibt vorname aus 
cout&lt;&lt;datenVec[0].nachname;  // Gibt nachname aus 
cout&lt;&lt;datenVec[0].ort;  // Gibt ort aus
</code></pre>
<p>Das mit dem std::move teste ich nachher mal ich hab hier gerade nur so einen veralteten Compiler. Wird Zeit mal was neueres.^^</p>
<p>Btw. kann die aktuelle MS Visual Studio Express Version schon C++11?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246722</guid><dc:creator><![CDATA[s_str]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:27:50 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 14:35:06 GMT]]></title><description><![CDATA[<p>s_str schrieb:</p>
<blockquote>
<p>Btw. kann die aktuelle MS Visual Studio Express Version schon C++11?</p>
</blockquote>
<p>Jup, ich denke schon. Zwar nicht sehr gut (afair noch nichtmal variadic templates), aber für Details musste warten bis jemand der damit arbeitet mehr rausrückt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246726</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:35:06 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 14:37:57 GMT]]></title><description><![CDATA[<p>Noch eine Frage:</p>
<p>Kann man das so erklären das der Compiler hier selber einen Konstruktor in die Struktur baut?</p>
<p>Daten d = {&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;};</p>
<pre><code class="language-cpp">#include &lt;utility&gt; 
 #include &lt;vector&gt; 

struct Daten 
 { 
     std::string vorname; 
     std::string nachname; 
     std::string ort; 
 }; 

int main() 
 { 
     std::vector&lt;Daten&gt; VecDaten; 
     Daten d = {&quot;Pipi&quot;, &quot;Langstrumpf&quot;, &quot;Tackatuckaland&quot;}; 
     VecDaten.push_back(std::move(d)); 
 }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246728</guid><dc:creator><![CDATA[s_tr]]></dc:creator><pubDate>Wed, 29 Aug 2012 14:37:57 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 15:02:21 GMT]]></title><description><![CDATA[<p>s_tr schrieb:</p>
<blockquote>
<p>Kann man das so erklären das der Compiler hier selber einen Konstruktor in die Struktur baut?</p>
</blockquote>
<p>Ja, genau so kann man das erklären. Wenn man ganz akribisch ist, wird man noch hinzufügen, dass das nur geschieht wenn kein anderer, user-definierter Ctor existiert.</p>
<p>Aber bei solchen PODs wie <code>Daten</code> gelten einige Member als implizit definiert:</p>
<pre><code class="language-cpp">Daten(Daten const&amp;)
Daten(Daten&amp;&amp; )
Daten()
~Daten()
Daten&amp; operator=(Daten const&amp;)
Daten&amp; operator=(Daten&amp;&amp;)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2246739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246739</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 15:19:09 GMT]]></title><description><![CDATA[<p>Deine Art von Initialisierung ist allerdings in 12.6.1, Klausel 2/3 definiert. Es ist eine spezielle Art von Initialisierung: Man initialisiert hierbei ein Objekt nicht durch den Konstruktor, sondern durch eine braced-init-list, die dann entweder die einzelnen Member nacheinander initialisiert, oder einen entsprechenden Ctor aufruft. Das nennt sich Listen-Initialisierung (engl. &quot;list-initialization&quot;), und funktioniert nur bei Klassen die entweder keinen Konstruktor definieren, oder die einen definieren, bei dem die Elemente der init-list ohne narrowing-conversion in die Konstruktor-Parameter konvertiert werden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246742</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 15:27:05 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Deine Art von Initialisierung ist allerdings in 12.6.1, Klausel 2/3 definiert. Es ist eine spezielle Art von Initialisierung: Man initialisiert hierbei ein Objekt nicht durch den Konstruktor, sondern durch eine braced-init-list, die dann entweder die einzelnen Member nacheinander initialisiert, oder einen entsprechenden Ctor aufruft. Das nennt sich Listen-Initialisierung (engl. &quot;list-initialization&quot;), und funktioniert nur bei Klassen die entweder keinen Konstruktor definieren, oder die einen definieren, bei dem die Elemente der init-list ohne narrowing-conversion in die Konstruktor-Parameter konvertiert werden können.</p>
</blockquote>
<p>Das hier ist aber keine list-initialization sondern eine aggregate-initialization, oder? Seit C++1 ist das irgendwie verwirrend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246746</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 15:52:27 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Deine Art von Initialisierung ist allerdings in 12.6.1, Klausel 2/3 definiert. Es ist eine spezielle Art von Initialisierung: Man initialisiert hierbei ein Objekt nicht durch den Konstruktor, sondern durch eine braced-init-list, die dann entweder die einzelnen Member nacheinander initialisiert, oder einen entsprechenden Ctor aufruft. Das nennt sich Listen-Initialisierung (engl. &quot;list-initialization&quot;), und funktioniert nur bei Klassen die entweder keinen Konstruktor definieren, oder die einen definieren, bei dem die Elemente der init-list ohne narrowing-conversion in die Konstruktor-Parameter konvertiert werden können.</p>
</blockquote>
<p>Das hier ist aber keine list-initialization sondern eine aggregate-initialization, oder? Seit C++1 ist das irgendwie verwirrend.</p>
</blockquote>
<p>Aggregat-Initialisierung durch Initialisierungsliste ist (eine spezielle Form der) List-Initialisierung. Leider reflektiert die Gliederung des neuen Standards das nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246754</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 29 Aug 2012 15:52:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu struct on Wed, 29 Aug 2012 16:03:39 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Deine Art von Initialisierung ist allerdings in 12.6.1, Klausel 2/3 definiert. Es ist eine spezielle Art von Initialisierung: Man initialisiert hierbei ein Objekt nicht durch den Konstruktor, sondern durch eine braced-init-list, die dann entweder die einzelnen Member nacheinander initialisiert, oder einen entsprechenden Ctor aufruft. Das nennt sich Listen-Initialisierung (engl. &quot;list-initialization&quot;), und funktioniert nur bei Klassen die entweder keinen Konstruktor definieren, oder die einen definieren, bei dem die Elemente der init-list ohne narrowing-conversion in die Konstruktor-Parameter konvertiert werden können.</p>
</blockquote>
<p>Das hier ist aber keine list-initialization sondern eine aggregate-initialization, oder? Seit C++1 ist das irgendwie verwirrend.</p>
</blockquote>
<p>Aggregat-Initialisierung durch Initialisierungsliste ist (eine spezielle Form der) List-Initialisierung. Leider reflektiert die Gliederung des neuen Standards das nicht.</p>
</blockquote>
<p>Schade. Ich habe mich an eben dem orientiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2246760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2246760</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 29 Aug 2012 16:03:39 GMT</pubDate></item></channel></rss>