<?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[Eintrag in Map - Fehlender Standardkonstruktor wegen Referenz]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich einen Eintrag in eine map</p>
<p>typedef std::map&lt;std::string, Klasse&gt; M;</p>
<p>machen möchte, in der Form:</p>
<p>M m;<br />
Klasse k;</p>
<p>m[&quot;foo&quot;] = k;</p>
<p>, dann erwartet der Compiler, dass ich einen = Operator in der Klasse &quot;Klasse&quot; zur Verfügung stelle.</p>
<p>Sehe ich es richtig, dass ein leeres Klasse-Objekt angelegt wird und die Zuweisung per = Operator durchgeführt wird?<br />
Im Endeffekt bedeutet das, dass sowohl der Standardkonstruktor als auch ein quasi Kopierkonstruktor aufgerufen wird.</p>
<p>Mein Problem hierbei ist, dass ich in &quot;Klasse&quot; Membervariablen verwende die als Referenz gespeichert sind. Der Compiler erwartet nun, dass diese durch die Konstruktoren initialisiert werden (per Temp-Variable), daher ist es nicht möglich den Standardkonstruktor zu verwenden. Den will aber die Mapzuweisung...</p>
<p>Irgendwie ist das eine Zwickmühle.</p>
<p>Ist meine oben aufgeführte Vermutung korrekt? Was kann ich tun?</p>
<p>DKT</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172223/eintrag-in-map-fehlender-standardkonstruktor-wegen-referenz</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 17:13:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172223.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Feb 2007 14:35:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eintrag in Map - Fehlender Standardkonstruktor wegen Referenz on Fri, 02 Feb 2007 14:35:13 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich einen Eintrag in eine map</p>
<p>typedef std::map&lt;std::string, Klasse&gt; M;</p>
<p>machen möchte, in der Form:</p>
<p>M m;<br />
Klasse k;</p>
<p>m[&quot;foo&quot;] = k;</p>
<p>, dann erwartet der Compiler, dass ich einen = Operator in der Klasse &quot;Klasse&quot; zur Verfügung stelle.</p>
<p>Sehe ich es richtig, dass ein leeres Klasse-Objekt angelegt wird und die Zuweisung per = Operator durchgeführt wird?<br />
Im Endeffekt bedeutet das, dass sowohl der Standardkonstruktor als auch ein quasi Kopierkonstruktor aufgerufen wird.</p>
<p>Mein Problem hierbei ist, dass ich in &quot;Klasse&quot; Membervariablen verwende die als Referenz gespeichert sind. Der Compiler erwartet nun, dass diese durch die Konstruktoren initialisiert werden (per Temp-Variable), daher ist es nicht möglich den Standardkonstruktor zu verwenden. Den will aber die Mapzuweisung...</p>
<p>Irgendwie ist das eine Zwickmühle.</p>
<p>Ist meine oben aufgeführte Vermutung korrekt? Was kann ich tun?</p>
<p>DKT</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1221790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1221790</guid><dc:creator><![CDATA[Kreatief]]></dc:creator><pubDate>Fri, 02 Feb 2007 14:35:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eintrag in Map - Fehlender Standardkonstruktor wegen Referenz on Fri, 02 Feb 2007 14:40:59 GMT]]></title><description><![CDATA[<p>Ja, deine Vermutung ist korrekt - op[] legt einen map-Eintrag mit einem leeren Wert an (wenn der Eintrag noch nicht existierte) und gibt eine Referenz auf diesen Eintrag zurück, die du dann mit op= überschreiben kannst. Dazu braucht deine Klasse einen Default-Ctor und einen Zuweisungsoperator (letzterer könnte auch ein Problem werden, wenn du Referenz-Elemente verwendest). Eine Alternative zu dem Aufruf bildet insert():</p>
<pre><code class="language-cpp">m.insert(make_pair(&quot;foo&quot;),k));
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1221793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1221793</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 02 Feb 2007 14:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to Eintrag in Map - Fehlender Standardkonstruktor wegen Referenz on Fri, 02 Feb 2007 14:45:36 GMT]]></title><description><![CDATA[<p>Ok, gut.</p>
<p>Das mit insert habe ich mir auch schon überlegt. Ich werde es ausprobieren.</p>
<p>Danke<br />
DKT</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1221797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1221797</guid><dc:creator><![CDATA[Kreatief]]></dc:creator><pubDate>Fri, 02 Feb 2007 14:45:36 GMT</pubDate></item></channel></rss>