<?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[Sichtbarkeit bei abgeleiteten Klassen]]></title><description><![CDATA[<p>Folgende Struktur:</p>
<pre><code class="language-cpp">class Base {
  ...
  public:
    void func1() {...};
};

class A : public Base {
  ...
  public:
    void func2() {...};
};

A *a = new A();
a-&gt;func2(); // a-&gt;func1() soll nicht sichtbar sein!
</code></pre>
<p>Die Instanz a erhält auch die Methode func1 mitgeliefert.<br />
Ich möchte jedoch nur die Methode func2 aufrufen können.</p>
<p>Ebenso soll in weiteren Unterklassen nur die jeweiligen Methoden der Instanz aufrufbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/192391/sichtbarkeit-bei-abgeleiteten-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:14:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192391.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Sep 2007 18:54:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Thu, 13 Sep 2007 18:58:11 GMT]]></title><description><![CDATA[<p>Folgende Struktur:</p>
<pre><code class="language-cpp">class Base {
  ...
  public:
    void func1() {...};
};

class A : public Base {
  ...
  public:
    void func2() {...};
};

A *a = new A();
a-&gt;func2(); // a-&gt;func1() soll nicht sichtbar sein!
</code></pre>
<p>Die Instanz a erhält auch die Methode func1 mitgeliefert.<br />
Ich möchte jedoch nur die Methode func2 aufrufen können.</p>
<p>Ebenso soll in weiteren Unterklassen nur die jeweiligen Methoden der Instanz aufrufbar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364864</guid><dc:creator><![CDATA[Zickedi]]></dc:creator><pubDate>Thu, 13 Sep 2007 18:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Thu, 13 Sep 2007 19:01:49 GMT]]></title><description><![CDATA[<p>ich frag lieber nicht was das soll.<br />
Möglichkeit1: mach die Vererbung private (oder protected)<br />
Möglichkeit2: verdecke die geerbten Funktionen durch eine private Deklaration gleichen Namens (muss keine Funktion sein) in der Subklasse. Dann sind die geerbten Funktionen allerdings immer noch durch qualifizierten Aufruf verfügbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364872</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 13 Sep 2007 19:01:49 GMT</pubDate></item><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Thu, 13 Sep 2007 19:02:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Dann mach die Methoden der Basisklasse private.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364873</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 13 Sep 2007 19:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Thu, 13 Sep 2007 19:21:27 GMT]]></title><description><![CDATA[<blockquote>
<p>ch frag lieber nicht was das soll.</p>
</blockquote>
<p><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>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a><br />
Methoden sollen immer aufrufbar sein, auch die der Basisklasse.<br />
Also: Base *b = new Base(); b-&gt;func1();</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Fall 1: class A : private Base {...</p>
<p>Methoden von Base sind immer noch sichtbar...</p>
<p>Fall 2: gefällt mir nicht, kommt mir eher als Hack vor</p>
<p>Qualifizierter Aufruf ist erlaubt. Es soll nur bei einer Instanz nicht möglich sein, Methoden der Basisklassen aufrufen zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364882</guid><dc:creator><![CDATA[Zickedi]]></dc:creator><pubDate>Thu, 13 Sep 2007 19:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Thu, 13 Sep 2007 19:43:14 GMT]]></title><description><![CDATA[<p>Zickedi schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Fall 1: class A : private Base {...</p>
<p>Methoden von Base sind immer noch sichtbar...</p>
</blockquote>
<p>natürlich. Nur Überdeckung kann die Sichtbarkeit eines Bezeichners verhindern. Allerdings kann ein Aufrufer, der nicht zufällig friend der ableitenden Klasse ist, sdie geerbten Funktionen nicht mehr aufrufen.</p>
<p>Ich frag doch lieber, was das ganze soll. Klingt wie eine Vergewaltigung des Ableitungsmechanismus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364891</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 13 Sep 2007 19:43:14 GMT</pubDate></item><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Thu, 13 Sep 2007 20:17:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Klingt wie eine Vergewaltigung des Ableitungsmechanismus.</p>
</blockquote>
<p>Ja, bin da wohl auf der falschen Fährte.</p>
<p>Damit will ich ein Datenmodell abbilden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364906</guid><dc:creator><![CDATA[Zickedi]]></dc:creator><pubDate>Thu, 13 Sep 2007 20:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to Sichtbarkeit bei abgeleiteten Klassen on Fri, 14 Sep 2007 09:47:02 GMT]]></title><description><![CDATA[<p>Bist du wohl. Und &quot;ein Datenmodell abbilden&quot; ist nicht besonders umfangreiche Information, fuerchte ich.</p>
<p>Wenn ich das richtig verstanden habe, willst du Klassen, die</p>
<p>a) auf die Moeglichkeiten anderer Klassen zugreifen wollen (wozu sonst vererbung)<br />
b) jeweils eine eigene Schnittstelle haben, die Schnittstelle der benutzten KLassen aber nicht nach aussen sichtbar machen wollen.</p>
<p>Da du keine Schnittstelle vererben willst udn ergo auch nicht an Polymorphie interessiert sein kannst, mach doch einfach deine &quot;Basis&quot; Klasse zum Member der anderen Klasse, ganz ohne Ableitung:</p>
<pre><code class="language-cpp">class Base {
  ...
  public:
    void func1() {...};
};

class A{
  ...
  Base m_base;
  public:
    void func2() {...};
};
</code></pre>
<p>So kannst du auf jegliche Funktionalitaet von Base auch in A zugreifen, die Schnittstelle bzw. das Vorhandensein von Base ist aber nach aussen verborgen. Mehr scheinst du ja nicht zu wollen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1365117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1365117</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 14 Sep 2007 09:47:02 GMT</pubDate></item></channel></rss>