<?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[Datankapselung als Stolperstein]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse nach folgendem Muster</p>
<pre><code class="language-cpp">class B
{
  private:

    double test;

  public:

    void SetTest(double test);
    double GetTest();
}

class A
{
  private:

    B testb;

  public:

    B GetB() const;
    SetB(const &amp;B test);
}
</code></pre>
<p>Datenkapselung schön und gut.. bei mir kommt es aber vor dass ich von außen über A test setzen möchte...</p>
<p>Entweder implementiere ich mir in A ein</p>
<pre><code class="language-cpp">B &amp;SetB()
</code></pre>
<p>was dann im Zugriff total hässlich aussieht:</p>
<pre><code class="language-cpp">objectA.SetB().SetTest(1234.0);
</code></pre>
<p>oder ich muss mir jede Methode einzeln kapseln.. was auch nicht sein sollte.</p>
<p>Sobald A von B ableite und das private in B in protected umbenenne, bekomme ich ein problem mit Basisklassen. A und B sind abgeleitete Klassen von C... Compiler meldet mehrdeutige Elemente und ich habs dann gelassen.</p>
<p>Gibt es ein Vorgehen um so etwas schön zu konstruieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288287/datankapselung-als-stolperstein</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 03:10:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288287.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Jun 2011 05:21:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datankapselung als Stolperstein on Tue, 14 Jun 2011 05:21:19 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse nach folgendem Muster</p>
<pre><code class="language-cpp">class B
{
  private:

    double test;

  public:

    void SetTest(double test);
    double GetTest();
}

class A
{
  private:

    B testb;

  public:

    B GetB() const;
    SetB(const &amp;B test);
}
</code></pre>
<p>Datenkapselung schön und gut.. bei mir kommt es aber vor dass ich von außen über A test setzen möchte...</p>
<p>Entweder implementiere ich mir in A ein</p>
<pre><code class="language-cpp">B &amp;SetB()
</code></pre>
<p>was dann im Zugriff total hässlich aussieht:</p>
<pre><code class="language-cpp">objectA.SetB().SetTest(1234.0);
</code></pre>
<p>oder ich muss mir jede Methode einzeln kapseln.. was auch nicht sein sollte.</p>
<p>Sobald A von B ableite und das private in B in protected umbenenne, bekomme ich ein problem mit Basisklassen. A und B sind abgeleitete Klassen von C... Compiler meldet mehrdeutige Elemente und ich habs dann gelassen.</p>
<p>Gibt es ein Vorgehen um so etwas schön zu konstruieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077743</guid><dc:creator><![CDATA[asdasd]]></dc:creator><pubDate>Tue, 14 Jun 2011 05:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to Datankapselung als Stolperstein on Tue, 14 Jun 2011 06:01:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class A
{
public:
    B&amp; GetB();  // gib mir dein B und lass es mich verändert (so wie ich will)
    SetTest(double test);  // who the f*ck is B??
    SetB(const B&amp; b);  // nimm dies
};
</code></pre>
<p>Sinnvoll kann man das nur entscheiden, wenn man weiß was A, B und C ist. Aber eine Vererbung einzubauen, um das zu ermöglichen ist mit Sicherheit der schlechteste Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077750</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 14 Jun 2011 06:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Datankapselung als Stolperstein on Tue, 14 Jun 2011 07:48:29 GMT]]></title><description><![CDATA[<p>Du meintest es gäbe Probleme mit Mehrdeutigkeiten wenn du A von B ableiten lässt, da beides Unterklassen von C sind. Doch wieso lässt du A denn überhaupt weiterhin von C ableiten, wenn du das alles über B bekommst? Lässt du A von B ableiten, brauchst du A doch nicht nochmal von C ableiten lassen.</p>
<p>Falls das nicht geht weil A zu einer Hierarchie gehört deren Basis von C Ableitet und du das nicht ändern darfst, könntest du ja mal ein wenig nach &quot;virtueller Vererbung&quot; googlen. Vielleicht bekommst du ja so den kram mit den Mehrdeutigkeiten in den Griff</p>
<p>cu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2077780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2077780</guid><dc:creator><![CDATA[Ka-Mensch]]></dc:creator><pubDate>Tue, 14 Jun 2011 07:48:29 GMT</pubDate></item></channel></rss>