<?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[Probleme mit Copy-Konstruktor einer abgeleiteten Klasse.]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe ein Problem mit einem Copy-Konstruktor in einer abgeleiteten Klasse.</p>
<p>Die Basisklasse sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">enum TYPE { empty, blocked, taken };

class Cell_t {

    public:
        Cell_t(TYPE,
               unsigned short int,
               unsigned short int);
        Cell_t(const Cell_t &amp;);

    ...
}
</code></pre>
<p>Und der Copy-Konstruktor sieht so aus:</p>
<pre><code class="language-cpp">Cell_t::Cell_t(TYPE type,
    unsigned short int posX,
    unsigned short int posY) {

    itsType = type;
    itsPosX = posX;
    itsPosY = posY;
}
</code></pre>
<p>Die Basisklasse funktioniert gut aber die abgeleitete Klasse die folgendermaßen aussieht...</p>
<pre><code class="language-cpp">class TakenCell_t : public Cell_t {

    public:
        TakenCell_t(unsigned short int,
        unsigned short int,
        std::string,
        unsigned short int,
        unsigned short int,
        unsigned short int,
        unsigned short int);
        Cell_t(const Cell_t &amp;);
    ...
}
</code></pre>
<p>macht mir Probleme. Und zwar stellt sich mir die Frage wie der Copy-Konstruktor aussehen soll? Mein erster Versuch ging natürlich in die Hose:</p>
<pre><code class="language-cpp">TakenCell_t::TakenCell_t(const TakenCell_t &amp;rhs):
Cell_t::Cell_t(const Cell_t &amp;rhs) {

    itsText = rhs.GetText();
    itsColSpan = rhs.GetColSpan();
    itsRowSpan = rhs.GetRowSpan();
    itsWidth = rhs.GetWidth();
    itsHeight = rhs.GetHeight();
}
</code></pre>
<p>Kann wer weiterhelfen?</p>
<p>Danke<br />
Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175862/probleme-mit-copy-konstruktor-einer-abgeleiteten-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 11:09:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175862.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Mar 2007 18:16:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit Copy-Konstruktor einer abgeleiteten Klasse. on Wed, 14 Mar 2007 18:16:23 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe ein Problem mit einem Copy-Konstruktor in einer abgeleiteten Klasse.</p>
<p>Die Basisklasse sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">enum TYPE { empty, blocked, taken };

class Cell_t {

    public:
        Cell_t(TYPE,
               unsigned short int,
               unsigned short int);
        Cell_t(const Cell_t &amp;);

    ...
}
</code></pre>
<p>Und der Copy-Konstruktor sieht so aus:</p>
<pre><code class="language-cpp">Cell_t::Cell_t(TYPE type,
    unsigned short int posX,
    unsigned short int posY) {

    itsType = type;
    itsPosX = posX;
    itsPosY = posY;
}
</code></pre>
<p>Die Basisklasse funktioniert gut aber die abgeleitete Klasse die folgendermaßen aussieht...</p>
<pre><code class="language-cpp">class TakenCell_t : public Cell_t {

    public:
        TakenCell_t(unsigned short int,
        unsigned short int,
        std::string,
        unsigned short int,
        unsigned short int,
        unsigned short int,
        unsigned short int);
        Cell_t(const Cell_t &amp;);
    ...
}
</code></pre>
<p>macht mir Probleme. Und zwar stellt sich mir die Frage wie der Copy-Konstruktor aussehen soll? Mein erster Versuch ging natürlich in die Hose:</p>
<pre><code class="language-cpp">TakenCell_t::TakenCell_t(const TakenCell_t &amp;rhs):
Cell_t::Cell_t(const Cell_t &amp;rhs) {

    itsText = rhs.GetText();
    itsColSpan = rhs.GetColSpan();
    itsRowSpan = rhs.GetRowSpan();
    itsWidth = rhs.GetWidth();
    itsHeight = rhs.GetHeight();
}
</code></pre>
<p>Kann wer weiterhelfen?</p>
<p>Danke<br />
Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245686</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Wed, 14 Mar 2007 18:16:23 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit Copy-Konstruktor einer abgeleiteten Klasse. on Wed, 14 Mar 2007 21:44:29 GMT]]></title><description><![CDATA[<p>Hallo Goran,</p>
<p>Dein Copy-Konstruktor von TakenCell_t muss so aussehen:</p>
<pre><code class="language-cpp">class TakenCell_t : public Cell_t 
{
public:
    TakenCell_t( ... );
    TakenCell_t( const TakenCell_t &amp; b );
    // Cell_t(const Cell_t &amp;);  &lt;== das ist hier falsch

    std::string itsText;
    // usw.
};

TakenCell_t::TakenCell_t( const TakenCell_t&amp; b )
    : Cell_t( b )
    , itsText( b.itsText )
    // weiter Member initialisieren
{}
</code></pre>
<p>benutzte Initialisierungslisten, das ist schneller, einfacher und sieht aufgeräumt aus.</p>
<p>Weiter wäre zu überlegen, ob Du überhaupt einen Copy-Konstruktor brauchst. Solange eine Klasse nur int, short, std::string und ähnliches als Member hat, die einfach nur kopiert werden müssen, würde ich den Copy-Konstruktor immer weglassen; er wird dann vom Compiler automatisch (und korrekt) erzeugt.</p>
<p>.. und vergiss das ';' hinter der Klassendefinition nicht.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245790</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Wed, 14 Mar 2007 21:44:29 GMT</pubDate></item></channel></rss>