<?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[Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte gerne den Wert der Attribute der Objekte meiner Klasse nach dem Programmende abspeichern um beim Programmstart wieder mit den gespeicherten Werten zu Arbeiten. Mit einfachen Basistypen ist das bis jetzt auch kein Problem.<br />
Indem ich mittels Container über die Objekte iteriere, wird bei jedem Objekt die<br />
Methode speichere() aufgerufen und der Inhalt auf Platte geschrieben.<br />
Analog sieht der Programmstart aus: Neues Objekt anlegen, die Methode lade() aufrufen und sofern noch Daten in der Datei stehen, werden die entsprechenden Attribute abgespeichert und das Objekt an der selben Position im Container gespeichert, wo es ursprünglich war.</p>
<p>Nun habe ich allerdings eine Verwandschaftsbeziehung zwischen meinen Objekten:</p>
<p>Objekt A hat z.B. 3 Kindobjekte D, H, J.<br />
(stl::vector* &lt;MyClass*&gt; m_pChildren;)</p>
<p>D,H,J somit jeweils das Vaterobjekt A: (MyClass* m_pFather;)</p>
<p>Wie kann ich nun diese Pointer abspeichern? Was nicht passieren darf ist: dass ich durch den Vector durchiteriere und jeweils wieder die Attribute der Kindobjekte abspeichere. Die Objekte sollen ja jeweils eindeutig sein.</p>
<p>Was genauso wenig geht, ist den Pointer direkt zu speichern, man weiß ja nicht, wo die Objekte im Speicher liegen, beim nächsten Programmstart.</p>
<p>Ich hoffe, mein Problem soweit verständlich formuliert zu haben.</p>
<p>Meine Frage: Hat jemand bereits mit diesem Problem zu tun gehabt (oder ist so schlau ;), dass er eine Lösung kennt oder gar selbst erstellt hat?</p>
<p>Ich würde mich über Stichworte, Beispielcode oder Tipps für Internetseiten, bzw. ein Buch wo das Problem behandelt wurde sehr freuen!</p>
<p>Gruß und Dank</p>
<p>HaJo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/168256/objekte-persistent-abspeichern-problem-kindobjekte-vom-selben-typ</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 07:46:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168256.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 20 Dec 2006 08:05:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ on Wed, 20 Dec 2006 08:05:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte gerne den Wert der Attribute der Objekte meiner Klasse nach dem Programmende abspeichern um beim Programmstart wieder mit den gespeicherten Werten zu Arbeiten. Mit einfachen Basistypen ist das bis jetzt auch kein Problem.<br />
Indem ich mittels Container über die Objekte iteriere, wird bei jedem Objekt die<br />
Methode speichere() aufgerufen und der Inhalt auf Platte geschrieben.<br />
Analog sieht der Programmstart aus: Neues Objekt anlegen, die Methode lade() aufrufen und sofern noch Daten in der Datei stehen, werden die entsprechenden Attribute abgespeichert und das Objekt an der selben Position im Container gespeichert, wo es ursprünglich war.</p>
<p>Nun habe ich allerdings eine Verwandschaftsbeziehung zwischen meinen Objekten:</p>
<p>Objekt A hat z.B. 3 Kindobjekte D, H, J.<br />
(stl::vector* &lt;MyClass*&gt; m_pChildren;)</p>
<p>D,H,J somit jeweils das Vaterobjekt A: (MyClass* m_pFather;)</p>
<p>Wie kann ich nun diese Pointer abspeichern? Was nicht passieren darf ist: dass ich durch den Vector durchiteriere und jeweils wieder die Attribute der Kindobjekte abspeichere. Die Objekte sollen ja jeweils eindeutig sein.</p>
<p>Was genauso wenig geht, ist den Pointer direkt zu speichern, man weiß ja nicht, wo die Objekte im Speicher liegen, beim nächsten Programmstart.</p>
<p>Ich hoffe, mein Problem soweit verständlich formuliert zu haben.</p>
<p>Meine Frage: Hat jemand bereits mit diesem Problem zu tun gehabt (oder ist so schlau ;), dass er eine Lösung kennt oder gar selbst erstellt hat?</p>
<p>Ich würde mich über Stichworte, Beispielcode oder Tipps für Internetseiten, bzw. ein Buch wo das Problem behandelt wurde sehr freuen!</p>
<p>Gruß und Dank</p>
<p>HaJo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195223</guid><dc:creator><![CDATA[Hajo32]]></dc:creator><pubDate>Wed, 20 Dec 2006 08:05:01 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ on Wed, 20 Dec 2006 08:09:30 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>du must zwei Listen abspeichern, eine für jede der beiden im Speicher befindlichen vectoren. Anstelle der Pointeraddressen speicherst du aber den Index des verwiesenen Elements in der Liste.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195225</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 20 Dec 2006 08:09:30 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ on Wed, 20 Dec 2006 08:10:09 GMT]]></title><description><![CDATA[<p>Eigentlich brauchst du die Eltern-Pointer überhaupt nicht zu speichern. Objekt A lädt als erstes seine Kinder-Objekte und ruft danach deren SetParent()-Methode auf, um ihnen seine (gültige) Adresse zu übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195226</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 20 Dec 2006 08:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ on Wed, 20 Dec 2006 09:05:38 GMT]]></title><description><![CDATA[<p>Danke soweit mal:</p>
<p>Ich fasse also zusammen:</p>
<p>die Objekte speichere ich so ab, wie ich es geplant habe:</p>
<p>Hauptvector durchiterieren. Und für jedes Element alle Standartdatentypen abspeichern.</p>
<p>Zusätzlich iteriere ich danach durch die jeweiligen Kindervektoren des aktuellen Objektes hindurch und suche die aktuellen Elemente im Hauptvektor. Die zugehörige Hauptvektorindexnummer wird abgespeichert. Nach dem letzen Index kommt dann noch ein Stopsignal (-1?) um festzustellen, dass ich mit dem aktuellen Objekt fertig bin.</p>
<p>Nun aber zum Laden: als erstes muss ich mir wohl alle Objekte anlegen und in den Vektor eintragen. (also sinnvoll, zu speichern wieviele Objekte gespeichert wurden)</p>
<p>Dann wird wieder über den Vector iteriert und alle Werte werden entsprechend der Datei eingetragen. Im Speziellen Fall der gespeicherten Indizes wird dann eben der Pointer an Vektorposition [index] in die Kindliste eingetragen. Zusätzlich rufe ich in diesem Kind die Methode auf</p>
<pre><code>//reconstruct the object family
int index = 0;
MyClass* pCurrentChild;
while ( (index =(fileManager.readNextInt())) != -1){
 pCurrentChild = m_pTable-&gt;getObjectInMainVectorAt(index);
 m_pChildren-&gt;push_back(pCurrentChild);
 pCurrentChild-&gt;setParent(this);
}
</code></pre>
<p>Ihr seid echt schnell! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195236</guid><dc:creator><![CDATA[Hajo32]]></dc:creator><pubDate>Wed, 20 Dec 2006 09:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ on Wed, 20 Dec 2006 10:20:31 GMT]]></title><description><![CDATA[<p>Hajo32 schrieb:</p>
<blockquote>
<p>...noch ein Stopsignal (-1?) um festzustellen, dass ich mit dem aktuellen Objekt fertig bin....</p>
</blockquote>
<p>Ich würde ja eher die Zahl der Kinder abspeichern (so, als wäre es ein int-Element des Parents). So &quot;magic numbers&quot; bereiten mit immer Unwohlsein.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195265</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 20 Dec 2006 10:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte persistent abspeichern...Problem: Kindobjekte vom selben Typ on Wed, 20 Dec 2006 12:56:06 GMT]]></title><description><![CDATA[<p>Das ist natürlich um einiges eleganter!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1195364</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1195364</guid><dc:creator><![CDATA[HaJo32_nicht eingeloggt]]></dc:creator><pubDate>Wed, 20 Dec 2006 12:56:06 GMT</pubDate></item></channel></rss>