<?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[partielle einschränkung beim vererben]]></title><description><![CDATA[<p>hallo,<br />
also ich hab ungefähr folgende sache</p>
<pre><code class="language-cpp">class A
{...};
class B
{...};
class C : public A, public B
{...};
class D : private C
{...};
</code></pre>
<p>und zwar möchte ich gern in der Klasse D alle geerbten methoden von A als public haben und das von B und was in C neu dazugekommen ist soll private sein. allerdings ohne dass ich die ganzen methoden mit using in der public bereich ziehe, das wäre nämlich bissl viel.<br />
frage ist jetzt also ob das irgendwie geht.<br />
danke schonmal im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240151/partielle-einschränkung-beim-vererben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 04:49:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240151.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 May 2009 17:26:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 17:26:04 GMT]]></title><description><![CDATA[<p>hallo,<br />
also ich hab ungefähr folgende sache</p>
<pre><code class="language-cpp">class A
{...};
class B
{...};
class C : public A, public B
{...};
class D : private C
{...};
</code></pre>
<p>und zwar möchte ich gern in der Klasse D alle geerbten methoden von A als public haben und das von B und was in C neu dazugekommen ist soll private sein. allerdings ohne dass ich die ganzen methoden mit using in der public bereich ziehe, das wäre nämlich bissl viel.<br />
frage ist jetzt also ob das irgendwie geht.<br />
danke schonmal im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704540</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Sat, 02 May 2009 17:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 18:33:21 GMT]]></title><description><![CDATA[<p>Das macht keinen Sinn.</p>
<p>Mit Vererbung sagst du ja:</p>
<p>D ist ein C</p>
<p>Nun willst du aber sagen<br />
D ist ein bisschen wie C.</p>
<p>Und da ist public Vererbung einfach nicht das richtige.</p>
<p>Was willst du denn genau machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704571</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 02 May 2009 18:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 18:44:19 GMT]]></title><description><![CDATA[<p>bei C ist ja prinzipiell alles public was public sein soll, also A und B sind public geerbt.<br />
und in D möchte ich quasi einige sachen von C vor dem user verbergen und einiges halt nicht.<br />
wenn ich also private C vererbe, sieht der user in D nichts von C und ich muss alles was er sehen soll mit using in den public bereich ziehen.<br />
wenn ich aber public C vererbe, kann er in D alles von C benutzen, was ich aber halt nicht möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704576</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Sat, 02 May 2009 18:44:19 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 18:56:09 GMT]]></title><description><![CDATA[<p>mir ist schon klar dass du das so machen willst, nur das ist der falsche ansatz.</p>
<p>Erklaer mal <strong>warum</strong> du das so machen willst.</p>
<p>Denn Vererbung sagt nunmal ein D ist ein C. dh, ich kann ein D ueberall dort verwenden wo ein C erwartet wird. Wenn du nun aber gewisse Funktionen private machst, ist das ja nicht mehr moeglich. Deshalb geht das so nicht.</p>
<p>Eine Moeglichkeit waere D nicht von C public erben zu lassen und dann eben die notwendigen Funktionen wieder oeffentlich zu machen.</p>
<p>Das ganze riecht aber eher nach Code-Reuse, also ersparnis von Schreibarbeit. Und das ist meistens der falsche Ansatz. Vererbung ist eine sehr sehr ernste Sache. Man erbt nicht einfach so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704580</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 02 May 2009 18:56:09 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 19:57:11 GMT]]></title><description><![CDATA[<p>na wenn ich private C erbe, dann schraube ich ja alle zugriffsrechte von C in D auf private runter, das geht ja ganz regulär. sehe ich also nicht so ganz das problem was du hast. und ich will halt nicht alles pauschal auf private runterschrauben, weil ein paar sachen sollen ja noch zugänglich bleiben.<br />
da gäbe es halt die möglichkeit das im public-bereich von D mit using wieder sichtbar zu machen, das wären aber ne menge methoden, nämlich alle public methoden aus der klasse A, die wohlbemerkt in C auch schon public waren. in D sollen dann quasi nur die rechte der klasse B auf private runtergeschraubt werden aber A soll public bleiben.<br />
und ja es soll mir schreibarbeit ersparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704587</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Sat, 02 May 2009 19:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 20:12:44 GMT]]></title><description><![CDATA[<p>Ich sehe momentan zwei Probleme. Das erste hat Shade schon angesprochen. Vererbung ist eine designtechnische Entscheidung und kann deshalb nie mit dem Sparen von Schreibarbeit gerechtfertigt werden. Zweitens sagst du, A habe so viele Methoden, dass es zu aufwändig wäre, sie alle per using zu veröffentlichen. Daraus folgt, dass A schon zu monolitisch aufgebaut ist. Eine Klasse sollte nicht dutzende Methoden haben. Es gilt der Grundsatz: Eine Klasse, eine Aufgabe.</p>
<p>Ach so, um dann auf deine Frage zu antworten: Nein, so etwas ist nicht ohne den Schreibaufwand (entweder für die using-Deklarationen oder Wrapper-Funktionen) möglich. Eben weil es designtechnisch so keinen Sinn macht und deshalb nie benötigt wird.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704589</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Sat, 02 May 2009 20:12:44 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 20:27:07 GMT]]></title><description><![CDATA[<p>nagut, dann werde ich mir was anderes einfallen lassen müssen.<br />
danke trotzdem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704593</guid><dc:creator><![CDATA[StarCraftFeuerteufel]]></dc:creator><pubDate>Sat, 02 May 2009 20:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to partielle einschränkung beim vererben on Sat, 02 May 2009 21:05:02 GMT]]></title><description><![CDATA[<p>FreakyBKA schrieb:</p>
<blockquote>
<p>das wäre nämlich bissl viel.</p>
</blockquote>
<p>Was heißt &quot;bisschen viel&quot;? das legt den Verdacht nahe dass deine Klasse eventuell das <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" rel="nofollow">SRP</a> verletzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1704605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1704605</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 02 May 2009 21:05:02 GMT</pubDate></item></channel></rss>