<?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[Komplexe Strukturen kopieren]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine recht komplexe Struktur gebaut (unten ist nur ein Ausschnitt daraus), u.a. mit DynamicArrays. Nun möchte ich zur Laufzeit eine Kopie dieser Struktur anlegen. Wie mache ich das. So ist ja ein Kopieroperator nicht implementiert. Muss ich jedes einzelne Element in Schleifen rüberkopieren? Dies ist natürlich fehlerträchtig, wenn ich mal ein Element hinzufüge und vergesse die Kopierroutine anzupassen...</p>
<p>Beispiel</p>
<pre><code class="language-cpp">struct MyStruc{
      BYTE Id;
      DynamicArray &lt;struct Data{
         BYTE PinId;
         BYTE PinNummer;         
         DynamicArray &lt;BYTE&gt; Prop;
         DynamicArray &lt;BYTE&gt; Para;
         BYTE FctId;                      
      }&gt; Pin;
   };

   struct MyStruct2 {
      AnsiString Name;
      bool Checked;  // Ob Funktion in der Oberfläche ausgewählt ist
      bool Locked;   // Möglichkeit die Funktion von aussen her zu 
      DynamicArray &lt;struct MyStruc&gt; PossibleConnectors;
   };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/154094/komplexe-strukturen-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 10:49:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154094.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Jul 2006 12:08:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Mon, 24 Jul 2006 12:08:19 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine recht komplexe Struktur gebaut (unten ist nur ein Ausschnitt daraus), u.a. mit DynamicArrays. Nun möchte ich zur Laufzeit eine Kopie dieser Struktur anlegen. Wie mache ich das. So ist ja ein Kopieroperator nicht implementiert. Muss ich jedes einzelne Element in Schleifen rüberkopieren? Dies ist natürlich fehlerträchtig, wenn ich mal ein Element hinzufüge und vergesse die Kopierroutine anzupassen...</p>
<p>Beispiel</p>
<pre><code class="language-cpp">struct MyStruc{
      BYTE Id;
      DynamicArray &lt;struct Data{
         BYTE PinId;
         BYTE PinNummer;         
         DynamicArray &lt;BYTE&gt; Prop;
         DynamicArray &lt;BYTE&gt; Para;
         BYTE FctId;                      
      }&gt; Pin;
   };

   struct MyStruct2 {
      AnsiString Name;
      bool Checked;  // Ob Funktion in der Oberfläche ausgewählt ist
      bool Locked;   // Möglichkeit die Funktion von aussen her zu 
      DynamicArray &lt;struct MyStruc&gt; PossibleConnectors;
   };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1103099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103099</guid><dc:creator><![CDATA[California]]></dc:creator><pubDate>Mon, 24 Jul 2006 12:08:19 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Mon, 24 Jul 2006 12:18:47 GMT]]></title><description><![CDATA[<p>Du mußt halt für jede deiner structs einen Kopykonstruktor implementieren. DynamicArray hat ja auch eine Membervariable Length, so dass du da eigentlich auch nichts falsch machen kannst.<br />
Ich würde statt DynamicArray lieber vector verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103105</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 24 Jul 2006 12:18:47 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Mon, 24 Jul 2006 12:40:44 GMT]]></title><description><![CDATA[<p>Danke für die Antwort, aber noch ne Dumme Frage. Wie implementiere ich einen Copykontruktor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103125</guid><dc:creator><![CDATA[California]]></dc:creator><pubDate>Mon, 24 Jul 2006 12:40:44 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Mon, 24 Jul 2006 12:42:33 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>für Grundlagen des OOP siehe <a href="http://tutorial.schornboeck.net/konstruktor.htm" rel="nofollow">hier.</a></p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103129</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 24 Jul 2006 12:42:33 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Mon, 24 Jul 2006 13:43:41 GMT]]></title><description><![CDATA[<p>Hier mal ein Beispiel für dein MyStruct</p>
<pre><code class="language-cpp">struct MyStruc{
   BYTE Id;
   struct Data
   {
      BYTE PinId;
      BYTE PinNummer;
      DynamicArray &lt;BYTE&gt; Prop;
      DynamicArray &lt;BYTE&gt; Para;
      BYTE FctId;
      Data(const Data&amp; src) : PinId(src.PinId), PinNummer(src.PinNummer), FctId(src.FctId)
      {
        Prop = src.Prop.Copy();
        Para = src.Para.Copy();
      }
   };
   DynamicArray &lt;Data&gt; Pin;
   MyStruc(const MyStruc&amp; src) : Id(src.Id), Pin(src.Pin.Copy()) { }
};
</code></pre>
<p>Prop und Para könnte man eigentlich auch noch in die <a href="http://tutorial.schornboeck.net/initliste.htm" rel="nofollow">Initialisierungsliste</a> packen. evtl. braucht man hier noch den Zuweisungsoperator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103182</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 24 Jul 2006 13:43:41 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Tue, 25 Jul 2006 11:44:50 GMT]]></title><description><![CDATA[<p>Ok, hat geklappt. Allerdings schaffe ich das kopieren jetzt nur beim Anlegen der Struktur.</p>
<pre><code class="language-cpp">MyStruct Test();

....

MyStruct Test2(Test);
</code></pre>
<p>Zur Laufzeit geht das nicht, oder? Muss ich dann lieber ne Klasse nehmen? ICh brauche es , da in einem Hauptteil Daten in der Struktur stehen und i einem zweiten Teil Änderungen vorgenommern werden an der zweiten Struktur, die ggf. verworfen werden. Wenn nicht, dann müssen sie wieder in die erste Struktur rein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103745</guid><dc:creator><![CDATA[California]]></dc:creator><pubDate>Tue, 25 Jul 2006 11:44:50 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Tue, 25 Jul 2006 11:56:34 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Der effiziente Weg ist, das du das was du nun in deinem Kopierkonstruktor stehen hast, in eine extra Funktion namens z.b. Assign() auszulagerst, die du dann vom Konstruktor aus aufrufst. Wenn du jetzt noch den Zuweisungsoperator = für dein struct überschreibst und diesen ebenfalls Assign aufrufen läßt, bist du für alle Übernahme-Fälle gerüstet.</p>
<p>struct und class sind fast äquivalent. Nur der Standard-Zugriffsbeschränkungen ist unterschiedlich (class = private, struct = public). Deshalb bringt ein Umbau nichts weiter.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103752</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 25 Jul 2006 11:56:34 GMT</pubDate></item><item><title><![CDATA[Reply to Komplexe Strukturen kopieren on Tue, 25 Jul 2006 12:34:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Man könnte der struct auch eine swap-Funktion zum Austausch der Member geben. Dann kann man wieder all diese Funktionen über den Kopierkonstruktor erschlagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1103802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1103802</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 25 Jul 2006 12:34:01 GMT</pubDate></item></channel></rss>