<?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[[Gelöst] Containerklassen erweitern?]]></title><description><![CDATA[<p>Hallo erstmal,</p>
<p>Ich bin zwar schon länger in diesem Forum lesenderweise unterwegs, jetzt allerdings komme ich nicht mehr weiter und hoffe auf Hilfe.</p>
<p>Mein Problem:<br />
Ich habe einen Container in welchem ich eine Anzahl Objekte gleichen Typs halte. Nun möchte ich mit den Daten innerhalb dieses Containers verschiedene Dinge veranstalten, z.B. die Objekte serialisieren und in eine Datei schreiben, die Objekte aus einer Datei einlesen, Den Container mit Defaultwerten initialisieren, etc.</p>
<p>Da ja aufgrund der fehlenden virtuellen Destruktoren der Containerklassen von einer Ableitung/Vererbung abgeraten wird, habe ich mich bisher damit beholfen einfach den Container zu deklarieren und zusätzlich eine Klasse erstellt, welcher ich einen pointer auf den Container übergebe und diese die Funktionen (load/save/init) übernimmt. Ich empfinde das als wenig sauber, denn die Daten und die zugehörigen Methoden sollten ja schön gekapselt sein. Wenn ich den Container in diese Klasse hineinpacke, habe ich zwar diese Kapselung, jedoch kann ich auf den Container selbst dann nicht mehr in der gewohnten Weise ([]operator) zugreifen, sondern nur noch über Methoden, welchen der jeweilige Index als Parameter übergeben wird. Auch nicht sehr elegant.</p>
<p>Wie also bei diesem Problem Ansetzen? Operatorüberladung von []? Und wenn ja wie? Oder gibt es ein allgemeines Designpattern dafür? Ein Fingerzeig in die richtige Richtung würde mir schon sehr weiterhelfen.</p>
<p>Danke im Voraus!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/336001/gelöst-containerklassen-erweitern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 20 Apr 2026 00:26:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336001.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 26 Dec 2015 15:09:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Gelöst] Containerklassen erweitern? on Sat, 26 Dec 2015 19:50:38 GMT]]></title><description><![CDATA[<p>Hallo erstmal,</p>
<p>Ich bin zwar schon länger in diesem Forum lesenderweise unterwegs, jetzt allerdings komme ich nicht mehr weiter und hoffe auf Hilfe.</p>
<p>Mein Problem:<br />
Ich habe einen Container in welchem ich eine Anzahl Objekte gleichen Typs halte. Nun möchte ich mit den Daten innerhalb dieses Containers verschiedene Dinge veranstalten, z.B. die Objekte serialisieren und in eine Datei schreiben, die Objekte aus einer Datei einlesen, Den Container mit Defaultwerten initialisieren, etc.</p>
<p>Da ja aufgrund der fehlenden virtuellen Destruktoren der Containerklassen von einer Ableitung/Vererbung abgeraten wird, habe ich mich bisher damit beholfen einfach den Container zu deklarieren und zusätzlich eine Klasse erstellt, welcher ich einen pointer auf den Container übergebe und diese die Funktionen (load/save/init) übernimmt. Ich empfinde das als wenig sauber, denn die Daten und die zugehörigen Methoden sollten ja schön gekapselt sein. Wenn ich den Container in diese Klasse hineinpacke, habe ich zwar diese Kapselung, jedoch kann ich auf den Container selbst dann nicht mehr in der gewohnten Weise ([]operator) zugreifen, sondern nur noch über Methoden, welchen der jeweilige Index als Parameter übergeben wird. Auch nicht sehr elegant.</p>
<p>Wie also bei diesem Problem Ansetzen? Operatorüberladung von []? Und wenn ja wie? Oder gibt es ein allgemeines Designpattern dafür? Ein Fingerzeig in die richtige Richtung würde mir schon sehr weiterhelfen.</p>
<p>Danke im Voraus!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480811</guid><dc:creator><![CDATA[cselli]]></dc:creator><pubDate>Sat, 26 Dec 2015 19:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Containerklassen erweitern? on Sat, 26 Dec 2015 15:56:19 GMT]]></title><description><![CDATA[<p>cselli schrieb:</p>
<blockquote>
<p>Ich empfinde das als wenig sauber, denn die Daten und die zugehörigen Methoden sollten ja schön gekapselt sein.</p>
</blockquote>
<p>Nein. Eine Klasse sollte nicht alles beinhalten, was irgendjemand jemals damit machen wollen könnte. Zumindest sollte man sich bei &quot;Kapselung&quot; schon mal überlegen, obs in der Klasse wirklich Sinn macht. Gerade sowas wie Serialisierung passt normalerweise in keine Klasse. Was ist, wenn später noch ein anderes Format dazukommt? Hast du dann Methoden wie saveAsXml und saveAsJson? Oder saveAsXmlV1 und saveAsXmlV2? Und wenn es Exporter gibt, die das nicht in deinem nativen Format speichern, dann sind die außerhalb der Klasse implementiert? Dann kann man den nativen Serialisierer auch außerhalb der Klasse implementieren.</p>
<p>Die STL versucht normalerweise Datenstrukturen und Algorithmen über Iteratoren zu trennen. Das bietet sich bei Containern mehr oder weniger an, bin mir nicht sicher, ob sich das in deinem Fall anbietet. Bei den von dir genannten Beispielen würde ich das aber schon probieren. Und für Initialisieren mit Default Werten ist die Wahrscheinlichkeit hoch, dass es schon was in der STL gibt, vielleicht einfach ein std::fill.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480813</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 26 Dec 2015 15:56:19 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Containerklassen erweitern? on Sat, 26 Dec 2015 16:16:26 GMT]]></title><description><![CDATA[<p>Danke Mechanics!</p>
<p>Mechanics schrieb:</p>
<blockquote>
<p>Die STL versucht normalerweise Datenstrukturen und Algorithmen über Iteratoren zu trennen.</p>
</blockquote>
<p>Das sagt eigentlich alles. Ich würde mit einer Ableitung von der Containerklasse bzw. mit der Kapselung der Daten zusammen mit den Funktionen in einer Klasse genau dieses Prinzip verwischen. Ich liege also mit meiner Denke &quot;eine Liste mit Objekten muss die Methoden um sich selbst zu speichern/laden/initialisieren/etc. selbst mitbringen.&quot; wohl doch falsch.</p>
<p>Danke jedenfalls für den Denkanstoß!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480817</guid><dc:creator><![CDATA[cselli]]></dc:creator><pubDate>Sat, 26 Dec 2015 16:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Containerklassen erweitern? on Sat, 26 Dec 2015 16:38:12 GMT]]></title><description><![CDATA[<p>Das nennt man generische Programmierung, falls du den Begriff nicht kennst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480821</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Sat, 26 Dec 2015 16:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to [Gelöst] Containerklassen erweitern? on Sat, 26 Dec 2015 17:36:09 GMT]]></title><description><![CDATA[<p>Mechanics schrieb:</p>
<blockquote>
<p>Das nennt man generische Programmierung, falls du den Begriff nicht kennst.</p>
</blockquote>
<p>Der Begriff ist mir vom Wort her bekannt, aus dem Inhaltsverzeichnis meines C++ Buches. Eine super Gelegenheit und Motivation sich diesem Kapitel baldigst zu widmen! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2480835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2480835</guid><dc:creator><![CDATA[cselli]]></dc:creator><pubDate>Sat, 26 Dec 2015 17:36:09 GMT</pubDate></item></channel></rss>