<?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[Kopierkonstruktor HowTo]]></title><description><![CDATA[<p>Hallo!</p>
<p>Wenn ich mir den Kopierkonstruktor so definiere:</p>
<pre><code>// MyClass.h
MyClass(const MyClass &amp;rhs);

// MyClass.cpp
MyClass::MyClass(const MyClass &amp;rhs) {
}
</code></pre>
<p>Wie übernehme ich die Werte aus rhs in das Objekt?<br />
Wenn ich this-&gt;attribut = rhs.get_attribute() schreibe (die Verfügbarkeit der Methode get_attribute() vorausgesetzt), dann gibts den Fahler:</p>
<blockquote>
<p>error C2662: 'MyClass::get_attribute': this-Zeiger kann nicht von 'const MyClass' in 'MyClass &amp;' konvertiert werden</p>
</blockquote>
<p>Kann mir wer helfen?</p>
<p>Grüße, pktm</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211571/kopierkonstruktor-howto</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 06:26:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211571.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Apr 2008 16:44:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:44:47 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Wenn ich mir den Kopierkonstruktor so definiere:</p>
<pre><code>// MyClass.h
MyClass(const MyClass &amp;rhs);

// MyClass.cpp
MyClass::MyClass(const MyClass &amp;rhs) {
}
</code></pre>
<p>Wie übernehme ich die Werte aus rhs in das Objekt?<br />
Wenn ich this-&gt;attribut = rhs.get_attribute() schreibe (die Verfügbarkeit der Methode get_attribute() vorausgesetzt), dann gibts den Fahler:</p>
<blockquote>
<p>error C2662: 'MyClass::get_attribute': this-Zeiger kann nicht von 'const MyClass' in 'MyClass &amp;' konvertiert werden</p>
</blockquote>
<p>Kann mir wer helfen?</p>
<p>Grüße, pktm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497655</guid><dc:creator><![CDATA[pktm]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:49:04 GMT]]></title><description><![CDATA[<p>Ist denn get_attribute() const ? Das sollte sie schon sein.<br />
Wozu hier überhaupt eine Zugriffsfunktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497657</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:48:14 GMT]]></title><description><![CDATA[<p>wahrscheinlich ist deine Methode get_attribute () nicht const?!<br />
btw initialisierungsliste:</p>
<pre><code class="language-cpp">MyClass::MyClass(const MyClass &amp;rhs)
  : m_eins (rhs.m_eins), m_zwei (rhs.GetBla ()), m_drei (4) /*, ...*/
  {
   //ist bei mir meist leer, weil man fast alles in der initialisierungsliste machen kann
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1497658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497658</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:49:54 GMT]]></title><description><![CDATA[<p>pktm schrieb:</p>
<blockquote>
<p>Hallo!</p>
<p>Wenn ich mir den Kopierkonstruktor so definiere:</p>
</blockquote>
<p>Mach das einfach so:</p>
<pre><code>// MyClass.h
MyClass(MyClass const&amp; rhs);

// MyClass.cpp
MyClass::MyClass(MyClass const&amp; rhs) : attribute (rhs.attribute) {
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1497660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497660</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:49:54 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:50:13 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Ist denn get_attribute() const ? Das sollte sie schon sein.<br />
Wozu hier überhaupt eine Zugriffsfunktion?</p>
</blockquote>
<p>Hm nein, ist sie nicht. Macht es denn Sinn? Es ist eine Getter-Methode auf ein Attribut. Wozu macht man Methoden const?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497661</guid><dc:creator><![CDATA[pktm]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:51:50 GMT]]></title><description><![CDATA[<p>~john schrieb:</p>
<blockquote>
<p>pktm schrieb:</p>
<blockquote>
<p>Hallo!</p>
<p>Wenn ich mir den Kopierkonstruktor so definiere:</p>
</blockquote>
<p>Mach das einfach so:</p>
<pre><code>// MyClass.h
MyClass(MyClass const&amp; rhs);

// MyClass.cpp
MyClass::MyClass(MyClass const&amp; rhs) : attribute (rhs.attribute) {
}
</code></pre>
</blockquote>
<p>Ja, hörrt sich gut an.<br />
Kann ich denn einfach so auf private Atrribute zugreifen?<br />
*ausprobiergeh* =&gt; jepp <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/1497663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497663</guid><dc:creator><![CDATA[pktm]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:51:50 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:51:53 GMT]]></title><description><![CDATA[<p>pktm schrieb:</p>
<blockquote>
<p>Braunstein schrieb:</p>
<blockquote>
<p>Ist denn get_attribute() const ? Das sollte sie schon sein.<br />
Wozu hier überhaupt eine Zugriffsfunktion?</p>
</blockquote>
<p>Hm nein, ist sie nicht. Macht es denn Sinn? Es ist eine Getter-Methode auf ein Attribut. Wozu macht man Methoden const?</p>
</blockquote>
<p>Eine const Methode zeigt an, daß das Objekt nicht verändert wird(werden kann). Ein Getter ändert grundsätzlich nicht den Wert eines Objekts, daher ist es sinnvoll diesen const zu definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497664</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:51:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:52:21 GMT]]></title><description><![CDATA[<p>Falls der Copy-ctor am Ende so aussieht:</p>
<pre><code class="language-cpp">MyClass::MyClass(MyClass const&amp; rhs) : x(rhs.x),y(rhs.y),z(rhs.z){}
</code></pre>
<p>können wir auf die Definition eines eigenen Konstruktors gleich verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497665</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:55:18 GMT]]></title><description><![CDATA[<p><em>const</em> bei Methoden führt dazu, dass die Methode keine Änderungen an der Klasse durchführen kann. Dies ist bei GetXY()-Methoden sinnvoll.</p>
<p>Konstante Methoden haben folgende Syntax (merke dir, <em>const</em> nach dem Funktionsnamen zu schreiben):</p>
<pre><code class="language-cpp">int GetInt() const;
</code></pre>
<p><em>Edit: war schon jemand schneller <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="🙂"
    /><br />
Edit2: Semikolon vergessen *grr*</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497666</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:55:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:55:06 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Falls der Copy-ctor am Ende so aussieht:</p>
<pre><code class="language-cpp">MyClass::MyClass(MyClass const&amp; rhs) : x(rhs.x),y(rhs.y),z(rhs.z){}
</code></pre>
<p>können wir auf die Definition eines eigenen Konstruktors gleich verzichten.</p>
</blockquote>
<p>Ah, danke für das mit dem const.</p>
<p>Wieso kann ich gleich auf den Konstruktor verzeichten? Gibts den per default?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497667</guid><dc:creator><![CDATA[pktm]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:56:29 GMT]]></title><description><![CDATA[<p>Ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497670</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 16:56:39 GMT]]></title><description><![CDATA[<p>Ja, wenn du keinen eigenen schreibst, wird vom Compiler ein Kopierkonstruktor erzeugt. Manchmal ist es allerdings sinnvoll, einen spezifischen zu implementieren, z.B. wenn Zeiger im Spiel sind, oder wenn bei der Kopie eines Objektes noch etwas Spezielles passieren soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1497671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497671</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 24 Apr 2008 16:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kopierkonstruktor HowTo on Thu, 24 Apr 2008 17:03:29 GMT]]></title><description><![CDATA[<p>pktm schrieb:</p>
<blockquote>
<p>Ja, hörrt sich gut an.<br />
Kann ich denn einfach so auf private Atrribute zugreifen?<br />
*ausprobiergeh* =&gt; jepp <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>
</blockquote>
<p>Innerhalb der Klasse selbst kannst Du <strong>immer</strong> auf alle Attribute zugreifen. Auf Attribute der Elternklasse nur dann wenn sie protected oder public sind, aus anderen Klasse nur, wenn sie public sind. Ergänzend geht es noch, wenn eine Funktion, Methode oder Klasse als friend deklariert wurde.</p>
<p>Die Initialisierung via Getter Methode ist nur unter ganz bestimmten Fällen sinnvoll, und dann muß sie hierfür const deklariert sein.</p>
<pre><code>// .h
MClass {
    int attribute;
public:
    MyClass();
    MyClass(MyClass const&amp; rhs);
    int get_attribute() const; // Konstante Methode
};

// .cc
MyClass::MyClass (MyClass const&amp; rhs) : attribute (rhs.get_attribute()) {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1497676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1497676</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Thu, 24 Apr 2008 17:03:29 GMT</pubDate></item></channel></rss>