<?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[Klassenmember - teilweise freigeben]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>Ich habe eine Klasse, die verschiedene Member enthält. Diese lassen sich über Getter zurückgeben (und im UI anzeigen). Jetzt ist mein Problem: Wenn ich auch noch Setter für die Klassenmember einbaue, dann verliere ich doch jegliche Kontrolle über die Daten, oder? Ich frage das, weil die Klassenmember Listen darstellen, die nicht komplett geändert werden sollen, sondern nur leicht modifiziert werden sollen.<br />
Ich habe mir schon überlegt, entweder Funktionen in die Klasse einzubauen, die das Bearbeiten der Liste ermöglichen oder eine Art Wrapper-Klasse zu erstellen, die eben solche Funktionen bereitstellt. Wie würdet ihr das lösen?</p>
<p>Grüße,</p>
<p>daersc</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266930/klassenmember-teilweise-freigeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 18:12:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266930.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 May 2010 19:50:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Sun, 16 May 2010 19:50:34 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>Ich habe eine Klasse, die verschiedene Member enthält. Diese lassen sich über Getter zurückgeben (und im UI anzeigen). Jetzt ist mein Problem: Wenn ich auch noch Setter für die Klassenmember einbaue, dann verliere ich doch jegliche Kontrolle über die Daten, oder? Ich frage das, weil die Klassenmember Listen darstellen, die nicht komplett geändert werden sollen, sondern nur leicht modifiziert werden sollen.<br />
Ich habe mir schon überlegt, entweder Funktionen in die Klasse einzubauen, die das Bearbeiten der Liste ermöglichen oder eine Art Wrapper-Klasse zu erstellen, die eben solche Funktionen bereitstellt. Wie würdet ihr das lösen?</p>
<p>Grüße,</p>
<p>daersc</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898094</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 16 May 2010 19:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Sun, 16 May 2010 19:53:05 GMT]]></title><description><![CDATA[<p>Du kannst ja selbst bestimmen was in den Settern gemacht wird. Du kannst ja den Setter auch einfach leer lassen, dann wird nichts gemacht..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898095</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 16 May 2010 19:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Sun, 16 May 2010 19:57:19 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Hallo Forum,</p>
<p>Ich habe eine Klasse, die verschiedene Member enthält. Diese lassen sich über Getter zurückgeben (und im UI anzeigen). Jetzt ist mein Problem: Wenn ich auch noch Setter für die Klassenmember einbaue, dann verliere ich doch jegliche Kontrolle über die Daten, oder? Ich frage das, weil die Klassenmember Listen darstellen, die nicht komplett geändert werden sollen, sondern nur leicht modifiziert werden sollen.<br />
Ich habe mir schon überlegt, entweder Funktionen in die Klasse einzubauen, die das Bearbeiten der Liste ermöglichen oder eine Art Wrapper-Klasse zu erstellen, die eben solche Funktionen bereitstellt. Wie würdet ihr das lösen?</p>
<p>Grüße,</p>
<p>daersc</p>
</blockquote>
<p>Kann man so nicht sagen. Kommt drauf an, was du KONKRET vor hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898096</guid><dc:creator><![CDATA[jkljkl]]></dc:creator><pubDate>Sun, 16 May 2010 19:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Sun, 16 May 2010 21:08:48 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Wenn ich auch noch Setter für die Klassenmember einbaue, dann verliere ich doch jegliche Kontrolle über die Daten, oder? Ich frage das, weil die Klassenmember Listen darstellen, die nicht komplett geändert werden sollen, sondern nur leicht modifiziert werden sollen.</p>
</blockquote>
<p>Ich würde auf jeden Fall nur jene Funktionen zur öffentlichen Schnittstelle hinzufügen, die sinnvoll sind und deren Aufruf erlaubt ist. Wenn du irgendwo lediglich Lesezugriff brauchst, nimmst du eben nur einen Getter. Um genauer zu antworten, müsste man allerdings mehr über dein Problem wissen.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Du kannst ja den Setter auch einfach leer lassen, dann wird nichts gemacht..</p>
</blockquote>
<p>Warum das? Dann lieber gleich keinen Setter anbieten. Wenn ich <code>SetXY()</code> aufrufe, erwarte ich, dass <code>XY</code> dem von mir angegebenen Wert angepasst wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898137</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 16 May 2010 21:08:48 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Sun, 16 May 2010 21:27:30 GMT]]></title><description><![CDATA[<p>Also es geht darum, dass ich eine Klasse <code>Turnier</code> habe, die unter anderem einen Turnierverlauf enthält (also Listen, verschiedener Begegnungen von Teams).</p>
<pre><code class="language-cpp">class Begegnung {
    // Zeiger auf Teams und Ergebnis
};

typedef std::list&lt;Begegnung&gt; Runde;
typedef std::list&lt;Runde&gt; Verlauf;

class Tournament {
    Verlauf m_verlauf;
    // ...
};
</code></pre>
<p>Pro Runde soll ein Team selbstverständlich nur einen Gegner haben - Ein Team darf pro <code>Runde</code> also nur in einer <code>Begegnung</code> auftauchen.<br />
Wenn ich nun einen Setter schreiben würde, liese sich das ja kaum kontrollieren, ob dieses Kriterium eingehalten wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898143</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 16 May 2010 21:27:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Sun, 16 May 2010 21:38:12 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>Du kannst ja den Setter auch einfach leer lassen, dann wird nichts gemacht..</p>
</blockquote>
<p>Warum das? Dann lieber gleich keinen Setter anbieten. Wenn ich <code>SetXY()</code> aufrufe, erwarte ich, dass <code>XY</code> dem von mir angegebenen Wert angepasst wird.</p>
</blockquote>
<p>Klar, aber ich wollte damit sagen, dass er die volle Kontrolle hat, was der Setter macht. Und eben, wenn er möchte kann er auch einfach mal nichts aktualisieren.</p>
<p>Oftmals reicht die einfache Zuweisung als Setter, aber es gibt Fälle, wo man halt eni sehr spezielles Verhalten haben will. Und da kann es auch vorkommen, dass der Setter nichts macht (ob er leer ist, eine Bedingung enthält oder mittels Präprozessor gefüllt willt spielt dann keine Rolle).</p>
<p>Ob es bei ihm sinnvoll kann ich nicht sagen, aber die Kontrolle hat man mit einem Setter auf jeden Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898150</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 16 May 2010 21:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Mon, 17 May 2010 05:31:21 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Pro Runde soll ein Team selbstverständlich nur einen Gegner haben - Ein Team darf pro <code>Runde</code> also nur in einer <code>Begegnung</code> auftauchen.<br />
Wenn ich nun einen Setter schreiben würde, liese sich das ja kaum kontrollieren, ob dieses Kriterium eingehalten wurde.</p>
</blockquote>
<p>Dafür sollte ja meines erachtens die Klasse Begegnung selber zuständig sein. Da würde ich nichtmal einen Getter anbieten sondern die Listen nur Intern verwalten. Sobald du die Listen irgendwie nach aussen gibst, kann man von dort ein Add, Delete etc machen. Ggf solltest du noch weiter kapseln. Eine begegnung besteht doch sicherlich aus einen Match/Spiel etc. Irgendwas wo zwei Teams direkt gegeneinander Spielen. Damit besteht eine Runde aus 1-* solcher Matches. Runde könnte auch wieder eine Klasse sein. Die selbstständig abprüft ob eingetragene Matches Gültig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898208</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Mon, 17 May 2010 05:31:21 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Mon, 17 May 2010 07:25:50 GMT]]></title><description><![CDATA[<p>Fedaykin schrieb:</p>
<blockquote>
<p>Sobald du die Listen irgendwie nach aussen gibst, kann man von dort ein Add, Delete etc machen.</p>
</blockquote>
<p>Nein, so stimmt das leider nicht.<br />
Deine Aussage trifft nur auf nicht konstante Referenzen auf den Member zu. Sobald ich eine const-Referenz oder (am besten) ne Kopie zurück gegeben wird, kann man von außen nicht einfach die Liste oder deren Elemente manipulieren, resp. tut dies ohne die verwaltende Klasse zu verändern. (jaja, const_cast, aber solche Doldies gehören einfach durch plötzlich auftretende Runtime-Errors bestraft :P).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898233</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Mon, 17 May 2010 07:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenmember - teilweise freigeben on Mon, 17 May 2010 07:35:41 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>Fedaykin schrieb:</p>
<blockquote>
<p>Sobald du die Listen irgendwie nach aussen gibst, kann man von dort ein Add, Delete etc machen.</p>
</blockquote>
<p>Nein, so stimmt das leider nicht.<br />
Deine Aussage trifft nur auf nicht konstante Referenzen auf den Member zu. Sobald ich eine const-Referenz oder (am besten) ne Kopie zurück gegeben wird, kann man von außen nicht einfach die Liste oder deren Elemente manipulieren, resp. tut dies ohne die verwaltende Klasse zu verändern. (jaja, const_cast, aber solche Doldies gehören einfach durch plötzlich auftretende Runtime-Errors bestraft :P).</p>
</blockquote>
<p>Stimmt, hier trifft mich das ich lange kein C++ mehr gemacht habe. Dennoch halte ich eine bessere Kapselung in mehrere Klassen sinnvoller <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="😉"
    /> aber das ist wohl wieder persönliche Geschmackssache des Programmierers.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1898236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1898236</guid><dc:creator><![CDATA[Fedaykin]]></dc:creator><pubDate>Mon, 17 May 2010 07:35:41 GMT</pubDate></item></channel></rss>