<?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 copy contructor.]]></title><description><![CDATA[<pre><code class="language-cpp">class foo
{
public:
      void bar(const std::string name);
private:
     std::map&lt;const std::string, something&gt; objects;
};

void foo::bar(const std::string name)
{

   // sonstiger code
   somthing st;

 // sonstiger code &amp; initialisierungen

   objects[name] = st;
   // sonstiger code
}
</code></pre>
<p>Darf ich innerhalb einer Membermethode (bar)( der Klasse (foo) )einer std::map ein objekt st ( something) zuweisen, wobei die Klasse somthing <strong>keinen</strong> expliziten Copy contructor und auch <strong>keinen</strong> assignment operator '=' besitzt?</p>
<p>Der compiler erstellt zwar selebr welche aber ich bin mir nicht sicher obs so geht.</p>
<p>ps: Wenn ich aus einer std::map per key einen value abfrage, wobei key nicht existiert, wie kann ich das dann herausfinden? Also herausfinden dass der key ungültig ist, also dass der Eintrag innerhalb der map nicht existiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164024/frage-zu-copy-contructor</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 16:49:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164024.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Nov 2006 12:39:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu copy contructor. on Sat, 04 Nov 2006 12:39:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class foo
{
public:
      void bar(const std::string name);
private:
     std::map&lt;const std::string, something&gt; objects;
};

void foo::bar(const std::string name)
{

   // sonstiger code
   somthing st;

 // sonstiger code &amp; initialisierungen

   objects[name] = st;
   // sonstiger code
}
</code></pre>
<p>Darf ich innerhalb einer Membermethode (bar)( der Klasse (foo) )einer std::map ein objekt st ( something) zuweisen, wobei die Klasse somthing <strong>keinen</strong> expliziten Copy contructor und auch <strong>keinen</strong> assignment operator '=' besitzt?</p>
<p>Der compiler erstellt zwar selebr welche aber ich bin mir nicht sicher obs so geht.</p>
<p>ps: Wenn ich aus einer std::map per key einen value abfrage, wobei key nicht existiert, wie kann ich das dann herausfinden? Also herausfinden dass der key ungültig ist, also dass der Eintrag innerhalb der map nicht existiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168210</guid><dc:creator><![CDATA[JustAQPLZ]]></dc:creator><pubDate>Sat, 04 Nov 2006 12:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu copy contructor. on Sat, 04 Nov 2006 12:47:54 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/33264">@ps</a>:</p>
<p>wenn du mit</p>
<p>wert = map_[key].value;</p>
<p>versuchst einen key anzusrpechen, der gar nicht existiert, so wird der key erstellt und mit dem ergebnis des Standardkonstruktors des valuetypes gefüllt.</p>
<p>rausfinden, ob der key existiert geht mit<br />
map::find wenn find map:.end() zurückgibt, existiert der schlüsel nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168216</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 04 Nov 2006 12:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu copy contructor. on Sat, 04 Nov 2006 13:45:15 GMT]]></title><description><![CDATA[<p>Die kannst Klassen ohne explizit definierten Copy-Konstruktor und/oder Zuweisungsoperator in Zusammenhang mit der STL nutzen, wenn die automatisch generierten Funktionen ihren Zweck erfüllen.</p>
<p>Das ist zum Beispiel nicht mehr der Fall, wenn die Klasse Zeiger als Membervariablen hat und für das Löschen des Objekts verantwortlich ist, auf das gezeigt wird. Eventuell können da Smart Pointer helfen (std::auto_ptr ist allerdings nicht geeinget).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168250</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 04 Nov 2006 13:45:15 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu copy contructor. on Sat, 04 Nov 2006 14:00:29 GMT]]></title><description><![CDATA[<p>Z2 schrieb:</p>
<blockquote>
<p>Die kannst Klassen ohne explizit definierten Copy-Konstruktor und/oder Zuweisungsoperator in Zusammenhang mit der STL nutzen, wenn die automatisch generierten Funktionen ihren Zweck erfüllen.</p>
<p>Das ist zum Beispiel nicht mehr der Fall, wenn die Klasse Zeiger als Membervariablen hat und für das Löschen des Objekts verantwortlich ist, auf das gezeigt wird. Eventuell können da Smart Pointer helfen (std::auto_ptr ist allerdings nicht geeinget).</p>
</blockquote>
<p>Also die Sache ist die:<br />
Die Klasse hat einen Zeiger als Membervariable. Zudem kommen noch diverse andere Membervariablen + zeiger hinzu, welche diese Klasse von einer anderen Klasse erbt etc. (Mehrfachvererbung).</p>
<p>ps: Einen Zeiger, den die Klasse erbt, den muss/darf sie NICHT freigeben, da dies außerhalb dieser Klasse geschieht.</p>
<p>Also was würdest du mit empfehlen?</p>
<p>ps: Angenommen ich hab einen Zeiger auf eine struct, welche versch. Daten enthält, unter anderem auch einen zeiger. Wie kopiere ich dann das????</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168270</guid><dc:creator><![CDATA[JustAQPLZ]]></dc:creator><pubDate>Sat, 04 Nov 2006 14:00:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu copy contructor. on Sat, 04 Nov 2006 14:09:22 GMT]]></title><description><![CDATA[<p>Deep Copy, d.h. du mußt auch Kopien von den Objekten machen, auf die gezeigt wird. Oder du nimmst gleich geeignete Smart Pointer. Boost bietet da einiges an.</p>
<p>Edit:</p>
<blockquote>
<p>ps: Einen Zeiger, den die Klasse erbt, den muss/darf sie NICHT freigeben, da dies außerhalb dieser Klasse geschieht.</p>
</blockquote>
<p>Diesen Zeiger kannst du ganz normal kopieren. Da sind keine besonderen Maßnahmen notwendig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168274</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Sat, 04 Nov 2006 14:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu copy contructor. on Sat, 04 Nov 2006 14:10:46 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168277</guid><dc:creator><![CDATA[JustAQPLZ]]></dc:creator><pubDate>Sat, 04 Nov 2006 14:10:46 GMT</pubDate></item></channel></rss>