<?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[tiefe kopie einer liste mittels kopierkonstruktor]]></title><description><![CDATA[<p>hallo,<br />
ich habe hier eine klasse produktionsliste:</p>
<pre><code>struct Element
{
    char datum[11];
    unsigned int tagesproduktion;
    Element* next;
    void setValues(char* datum, unsigned int tagesprod);
    int printItem();
};

class Produktionsliste
{
      private:
              Element* first;
              Element* last;
      public:
             Produktionsliste();
             Produktionsliste(char* datum, int tagesprod);
             Produktionsliste(const Produktionsliste &amp;a);

             void init();
             ~Produktionsliste();

             //methoden
             typedef int (*ItemFunction)(struct Element*);

             void insert(int prod, char* data);
             void print();
             int clear(Produktionsliste* l);
             int removeElements(int val);
             int forall(ItemFunction exec);  
};
</code></pre>
<p>beim kopierkonstruktor hab ich aber ein verständnisproblem.<br />
dazu habe ich mir gedacht, dass ich die liste durch gehe und jedes element<br />
in eine neue liste eintrage. wenn ich nur die zeiger auf das erste und letzte element<br />
setzen würde, hätte ich ja nicht die liste kopiert, sondern nur eine &quot;flache&quot; kopie.<br />
mir ist klar, dass ich mit dem kopierkonstruktor ein objekt erzeuge, was eine kopie von einer konstanten referenz eines anderen objekts ist. wenn ich aber die elemente, in eine liste einfügen möchte, die ich mir erst beim aufruf des konstruktors erzeuge, komm ich da zu einem problem?!<br />
gibt es da eine möglichkeit trotzdem den kopierkonstruktor zu benutzten?<br />
hab ich irgendwo einen denkfehler?</p>
<p>dazu hab ich mir sowas überlegt, was mir aber eigentlich unlogisch erscheint:</p>
<pre><code>Produktionsliste::Produktionsliste(const Produktionsliste &amp;a)
{
    Produktionsliste* l;
    while(first!= NULL)
    {
        l.insert(first-&gt;tagesproduktion,first-&gt;datum);
        first = first-&gt;next;
    }
}
</code></pre>
<p>gruss<br />
pete</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202904/tiefe-kopie-einer-liste-mittels-kopierkonstruktor</link><generator>RSS for Node</generator><lastBuildDate>Wed, 07 Oct 2026 00:09:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202904.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Jan 2008 16:30:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to tiefe kopie einer liste mittels kopierkonstruktor on Wed, 16 Jan 2008 16:30:26 GMT]]></title><description><![CDATA[<p>hallo,<br />
ich habe hier eine klasse produktionsliste:</p>
<pre><code>struct Element
{
    char datum[11];
    unsigned int tagesproduktion;
    Element* next;
    void setValues(char* datum, unsigned int tagesprod);
    int printItem();
};

class Produktionsliste
{
      private:
              Element* first;
              Element* last;
      public:
             Produktionsliste();
             Produktionsliste(char* datum, int tagesprod);
             Produktionsliste(const Produktionsliste &amp;a);

             void init();
             ~Produktionsliste();

             //methoden
             typedef int (*ItemFunction)(struct Element*);

             void insert(int prod, char* data);
             void print();
             int clear(Produktionsliste* l);
             int removeElements(int val);
             int forall(ItemFunction exec);  
};
</code></pre>
<p>beim kopierkonstruktor hab ich aber ein verständnisproblem.<br />
dazu habe ich mir gedacht, dass ich die liste durch gehe und jedes element<br />
in eine neue liste eintrage. wenn ich nur die zeiger auf das erste und letzte element<br />
setzen würde, hätte ich ja nicht die liste kopiert, sondern nur eine &quot;flache&quot; kopie.<br />
mir ist klar, dass ich mit dem kopierkonstruktor ein objekt erzeuge, was eine kopie von einer konstanten referenz eines anderen objekts ist. wenn ich aber die elemente, in eine liste einfügen möchte, die ich mir erst beim aufruf des konstruktors erzeuge, komm ich da zu einem problem?!<br />
gibt es da eine möglichkeit trotzdem den kopierkonstruktor zu benutzten?<br />
hab ich irgendwo einen denkfehler?</p>
<p>dazu hab ich mir sowas überlegt, was mir aber eigentlich unlogisch erscheint:</p>
<pre><code>Produktionsliste::Produktionsliste(const Produktionsliste &amp;a)
{
    Produktionsliste* l;
    while(first!= NULL)
    {
        l.insert(first-&gt;tagesproduktion,first-&gt;datum);
        first = first-&gt;next;
    }
}
</code></pre>
<p>gruss<br />
pete</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437824</guid><dc:creator><![CDATA[petedeluxe2k]]></dc:creator><pubDate>Wed, 16 Jan 2008 16:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to tiefe kopie einer liste mittels kopierkonstruktor on Wed, 16 Jan 2008 16:42:42 GMT]]></title><description><![CDATA[<p>wenn ich im kopierkonstruktor einfach das objekt Produktionsliste* l weglasse,<br />
geht es... dachte, ich muss die methode insert(...) mit einem objekt vorne dran aufrufen?!<br />
dachte immer, das solche objektmethoden ohne eine objekt der klasse nicht funtkionieren???</p>
<p>tut mir leid, für den vorschnellen post <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/1437838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437838</guid><dc:creator><![CDATA[petedeluxe2k]]></dc:creator><pubDate>Wed, 16 Jan 2008 16:42:42 GMT</pubDate></item><item><title><![CDATA[Reply to tiefe kopie einer liste mittels kopierkonstruktor on Wed, 16 Jan 2008 17:06:45 GMT]]></title><description><![CDATA[<p>Innerhalb einer nicht-statischen Memberfunktion (z.B. einem Konstruktor) wird ein Verweis auf ein nicht-statisches Member member dieser Klasse ohne Verwendung von . oder -&gt; implizit als this-&gt;member angesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1437861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437861</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 16 Jan 2008 17:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to tiefe kopie einer liste mittels kopierkonstruktor on Wed, 16 Jan 2008 18:01:26 GMT]]></title><description><![CDATA[<p>ok danke für die fixe hilfe! <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>
<pre><code>Produktionsliste::Produktionsliste(const Produktionsliste &amp;a)
{
    while(first!= NULL)
    {
        this-&gt;insert(first-&gt;tagesproduktion,first-&gt;datum);
        first = first-&gt;next;
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1437908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1437908</guid><dc:creator><![CDATA[petedeluxe2k]]></dc:creator><pubDate>Wed, 16 Jan 2008 18:01:26 GMT</pubDate></item></channel></rss>