<?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[Frage zu protected const member]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Klasse mit einem const member:</p>
<pre><code class="language-cpp">class Foo {
public:
Foo(const A&amp; a) : _a(a){};
virtual Foo(){};

protected:
const A&amp; _a;
}
</code></pre>
<p>Die davon erbende Klasse soll allerdings auch auf<br />
nicht const Methoden zugreifen können.</p>
<pre><code class="language-cpp">class Bar : public Foo {
public:
Bar(A&amp; a):Foo(a){};
virtual Bar(){};
}
</code></pre>
<p>So habe ich natürlich nur const Zugriff.<br />
Brauch ich da nen const_cast oder gibts ne andere Möglichkeit?<br />
(mal abegesehen von ner zweiten Referenz)</p>
<p>Oder würdet ihr da Vererbung nutzen?<br />
Etwa so:</p>
<pre><code class="language-cpp">class BaseMember{

const A&amp; getMember() const = 0;
}

class ReadableBaseMember : public BaseMember{
public:
ReadableBaseMember(const A&amp; a):_a(a){};
const A&amp; getMember() const{return a};
protected:
const A&amp; _a;
}

class WritableBaseMember : public BaseMember{
public:
WritableBaseMember(A&amp; a):_a(a){};
const A&amp; getMember() const{return a};
A&amp; getMember() {return a};
protected:
A&amp; _a;
}

class Base : public virtual BaseMember {
// Alle Aufrufe über getMember();
}

class Foo : public Base, public ReadableBaseMember {
public:
Foo(const A a&amp;) : Base(), ReadableBaseMember(a);
}

class Bar : public Base, public WritableBaseMember {
public:
Bar(A a&amp;) : Base(), WritableBaseMember(a){};
// und andere Methoden
}
</code></pre>
<p>Ich hoffe ihr versteht, was ich meine und ich hab keine<br />
Fehler drin ^^</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187750/frage-zu-protected-const-member</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 20:37:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187750.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Jul 2007 17:21:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 17:22:04 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Klasse mit einem const member:</p>
<pre><code class="language-cpp">class Foo {
public:
Foo(const A&amp; a) : _a(a){};
virtual Foo(){};

protected:
const A&amp; _a;
}
</code></pre>
<p>Die davon erbende Klasse soll allerdings auch auf<br />
nicht const Methoden zugreifen können.</p>
<pre><code class="language-cpp">class Bar : public Foo {
public:
Bar(A&amp; a):Foo(a){};
virtual Bar(){};
}
</code></pre>
<p>So habe ich natürlich nur const Zugriff.<br />
Brauch ich da nen const_cast oder gibts ne andere Möglichkeit?<br />
(mal abegesehen von ner zweiten Referenz)</p>
<p>Oder würdet ihr da Vererbung nutzen?<br />
Etwa so:</p>
<pre><code class="language-cpp">class BaseMember{

const A&amp; getMember() const = 0;
}

class ReadableBaseMember : public BaseMember{
public:
ReadableBaseMember(const A&amp; a):_a(a){};
const A&amp; getMember() const{return a};
protected:
const A&amp; _a;
}

class WritableBaseMember : public BaseMember{
public:
WritableBaseMember(A&amp; a):_a(a){};
const A&amp; getMember() const{return a};
A&amp; getMember() {return a};
protected:
A&amp; _a;
}

class Base : public virtual BaseMember {
// Alle Aufrufe über getMember();
}

class Foo : public Base, public ReadableBaseMember {
public:
Foo(const A a&amp;) : Base(), ReadableBaseMember(a);
}

class Bar : public Base, public WritableBaseMember {
public:
Bar(A a&amp;) : Base(), WritableBaseMember(a){};
// und andere Methoden
}
</code></pre>
<p>Ich hoffe ihr versteht, was ich meine und ich hab keine<br />
Fehler drin ^^</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331019</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:22:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 17:22:35 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Ich hoffe ihr versteht, was ich meine und ich hab keine<br />
Fehler drin ^^</p>
</blockquote>
<p>Hi, ohne Codetags verstehe ich garnichts <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/1331021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331021</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 17:28:29 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>ich habe eine Klasse mit einem const member:</p>
<pre><code class="language-cpp">class Foo {
public:
Foo(const A&amp; a) : _a(a){};
virtual Foo(){};

protected:
const A&amp; _a;
}
</code></pre>
<p>Die davon erbende Klasse soll allerdings auch auf<br />
nicht const Methoden zugreifen können.</p>
<pre><code class="language-cpp">class Bar : public Foo {
public:
Bar(A&amp; a):Foo(a){};
virtual Bar(){};
}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Du hast eine Klasse mit einem const Member und die davon erbende Klasse soll auch auf nicht const-Methoden zugreifen können, wo ist der Zusammenhang ???</p>
<p>Edit: Was hast du eigentlich genau vor, was beabsichtigst du zu modellieren ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331025</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:28:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 17:38:08 GMT]]></title><description><![CDATA[<p>Die Foo-Member-Objekte sollen getter-Methoden enthalten:</p>
<pre><code class="language-cpp">Bla* getBla() const;
Blub* getBlub() const;
</code></pre>
<p>Zusätzlich kann ein Bar-Objekt aber auch (in zusätzlichen Methoden) die Setter<br />
verwenden:</p>
<pre><code class="language-cpp">void setBla(Bla*);
void setBlub(Blub*);
</code></pre>
<p>Folglich reicht Foo ein const Objekt aus und<br />
Bar nicht.</p>
<p>btw: Die fehlenden Code-Tags hab ich vor dir entdeckt <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/1331028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331028</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 17:38:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 18:19:21 GMT]]></title><description><![CDATA[<p>Also, ich habe das jetzt so verstanden.</p>
<p>Du hast eine Basisklasse die einen Member hat. Du willst das diese Basisklasse einmal nur lesbar und einmal nur schreibar ist oder beides jenachdem was du genau willst.</p>
<pre><code class="language-cpp">class Var { };

class Base {

    protected:
            Base() { }
            Var var;
};

class BaseWriter : virtual public Base {

    public:
        virtual void setVar(Var v) = 0;

};

class BaseReader : virtual public Base {

    public:
         virtual Var getVar() const = 0;

};
</code></pre>
<p>Man kan nur ein Base bekommen, wenn man davon ableitet. Somit könnte niemand von außen außer abgeleitete Klassen auf var zugreifen.</p>
<p>Dann hast du einmal deinen Reader und Writer. Klassen die jetzt irgendwas damit machen sollen, erben dann entsprechend von einen der beiden oder beiden ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331052</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 18:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 18:43:29 GMT]]></title><description><![CDATA[<p>Hallo KasF,</p>
<p>erstmal danke für deine Antwort!</p>
<p>Ich denke weißt nicht, was ich meine ^^</p>
<p>Es gaht darum, dass mein Objekt eine Referenz<br />
auf ein Objekt besitz (im Konstruktor übergeben),<br />
auf das es keinen Schreibzugriff braucht (const).<br />
Die abgeleitete brauch allerdings den Schreibzugriff.<br />
Als Beispiel:<br />
Ich hab ne Tabellenzelle, der ich einen Inhalt übergebe.<br />
Zur Widergabe des Inhaltsbrauche brauche ich keinen<br />
Schreibzugriff.<br />
Jetzt leite ich von Tabellenzelle ab um ne EditableTableCell<br />
zu machen. Die kann alles, was die ursprüngliche auch kann.<br />
Zusätzlich kann ich dann aber auch noch &quot;verändernde&quot; (nicht const)<br />
Methoden aufrufen. Jetzt war für die ursprüngliche Tabellenzelle<br />
ja nur nen const TableCell&amp; verlangt und folglich nur ein<br />
const TableCell&amp; verfügbar. Was ich natürlich machen kann,<br />
ist ihm einfach per const_cast zu sagen, dass er es darf.<br />
(Aber ist das sauber?)</p>
<p>Was man sonst machen kann (Der untere Code):<br />
Ich mach die Funktionalität in eine virtuelle Basisklasse bauen.<br />
Der member kommt dann erst in Foo (die Zelle) bzw. Bar (die editierbare)<br />
Zelle.</p>
<p>Ich kann die ReadableBaseMember und WritableBaseMember natürlich auch<br />
direkt in Foo bzw. Bar implementieren ^^</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331075</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 18:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 19:55:02 GMT]]></title><description><![CDATA[<p>CSpille schrieb:</p>
<blockquote>
<p>Es gaht darum, dass mein Objekt eine Referenz<br />
auf ein Objekt besitz (im Konstruktor übergeben),<br />
auf das es keinen Schreibzugriff braucht (const).</p>
</blockquote>
<p>Brauchen ist nicht gleich dürfen <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="🙂"
    /><br />
Wenn du verhindern willst, das irgendeine Memberfunktion deine Membervariable verändert, dann macht man diese Variable const. Nicht weil man keine Funktion hat die darauf schreibt ... ( Kann alles falsch sein, so aber meine Theorie <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>
<p>Zu deinem Problem:</p>
<p>CSpille schrieb:</p>
<blockquote>
<p>Es gaht darum, dass mein Objekt eine Referenz<br />
auf ein Objekt besitz (im Konstruktor übergeben),<br />
auf das es keinen Schreibzugriff braucht (const).</p>
</blockquote>
<p>-&gt;</p>
<pre><code class="language-cpp">//Niemand braucht Schreibzugriff hier drauf, &quot;niemand&quot; kann an var was ändern
class Base {

    protected:
            Base(Var &amp;v):var(v) { }
            Var &amp;var;
};
</code></pre>
<p>Nun willst du doch ein Interface um var nur lesend anzusprechen:</p>
<pre><code class="language-cpp">//Klassen die das Privileg haben wollen in var zu schreiben, müssen hiervon erben
class BaseWriter : virtual public Base {

    public:
        BaseWriter(Var &amp;v) : Base(v) { }
        virtual void setVar(Var v) = 0;

};
</code></pre>
<p>Damit auch alles schön ist, stellst du ein Interface für nur Schreibzugriffe:</p>
<pre><code class="language-cpp">//Klassen die das Privileg haben wollen var zu lesen, müssen hiervon erben
class BaseReader : virtual public Base {

    public:
         BaseReader(Var &amp;v) : Base(v) { }
         virtual Var getVar() const = 0;

};
</code></pre>
<p>Willst du nun eine Klasse haben, die beides Unterstützt dann:</p>
<pre><code class="language-cpp">class BaseIO : public BaseWriter, public BaseReader {

    public:
         BaseIO(Var &amp;v):BaseWriter(v),BaseReader(v) { }

         virtual void setVar(Var v) { var = v; }
         virtual const Var&amp; getVar() const { return var; }

};
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331119</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 19:55:02 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 20:05:37 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class BaseIO : public BaseWriter, public BaseReader {

    public:
         BaseIO(Var &amp;v):BaseWriter(v),BaseReader(v) { }

         virtual void setVar(Var v) { var = v; }
         virtual const Var&amp; getVar() const { return var; }

};
</code></pre>
</blockquote>
<p>Jetzt kriege ich aber die Krise, wieso funktioniert das nicht ?<br />
Er verlangt nach einem Base(), aber nirgendwo wird er doch aufgerufen ...</p>
<pre><code>|------------BaseIO(v)-------------------|
|                                        |
| |--BaseWr(v)--|       |--BaseRe(v)--|  |
| |             |       |             |  |
| |  |-----------Base(v)-------|      |  |
| |  |                         |      |  |
| |  |-------------------------|      |  |
| |-------------|       |-------------|  |
|                                        |
|----------------------------------------|
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1331124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331124</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 23 Jul 2007 20:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Mon, 23 Jul 2007 23:24:25 GMT]]></title><description><![CDATA[<p>Ist es denn notwändig die &quot;const&quot; Version der Klasse mit einer &quot;const Foo&amp;&quot; anlegen zu können?</p>
<p>Wenn nein kannst du das alles einfach weglassen.<br />
Wenn ja kannst du es z.B. so machen:</p>
<pre><code class="language-cpp">class Foo { ... };

class ConstBar
{
public:
    ConstBar(Foo const&amp; foo) : m_foo(foo) {}

    int GetA() const { return m_foo.GetA(); }

protected:
    Foo const&amp; m_foo;
};

class Bar : public ConstBar
{
public:
    Bar(Foo&amp; foo) : ConstBar(foo) {}

    void SetA(int a) { GetFoo().SetA(); }

protected:
    Foo&amp; GetFoo() { return const_cast&lt;Foo&amp;&gt;(m_foo); }
};
</code></pre>
<p>Der const_cast in &quot;Bar&quot; ist &quot;sicher&quot; und erlaubt, da das Objekt auf welches m_foo (in einem Bar!) zeigt niemals wirklich const sein kann, sonst hätte es der ctor Bar::Bar nicht gefressen. Ok, das Objekt könnte doch const sein, aber dann müsste jmd. ausserhalb von Bar selbst einen const_cast geschrieben haben um es wegzucasten, und dann ist DER schuld der diesen anderen const_cast geschrieben hat <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>
<p>Eine 2. Referenz zu verwenden ist aber sicher die sauberere Lösung, auch wenn es ein paar Byte mehr braucht.</p>
<p>Und bevor du einer Klasse einen vtable verpasse die keinen braucht kannst du gleich einen 2. Referenz verwenden, da diese auch nicht mehr Speicher braucht. Und du sparst die die etwas teureren und i.A. nicht-inline-baren virtual Calls.</p>
<p>Ich habe sowas allerdings noch NIE gebraucht. Ich will nicht behaupten dass man es nie brauchen kann, aber wie gesagt: ist mir noch nie untergekommen.</p>
<p>----</p>
<pre><code class="language-cpp">virtual public Base
</code></pre>
<p>-&gt; der ctor der &quot;most derived class&quot; (in dem Fall BaseIO::BaseIO) muss alle virtual base classes konstruieren.<br />
C++ verlangt das.</p>
<pre><code class="language-cpp">BaseIO(Var &amp;v):BaseWriter(v),BaseReader(v) { }
// -&gt;
    BaseIO(Var &amp;v):Base(v), BaseWriter(v),BaseReader(v) { }
</code></pre>
<p>Frag mich bloss nicht wieso das so ist, dazu müsste ich anfangen zu denken, und das mag ich jetzt nicht <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/1331195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331195</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 23 Jul 2007 23:24:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Tue, 24 Jul 2007 06:53:30 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">virtual public Base
</code></pre>
<p>-&gt; der ctor der &quot;most derived class&quot; (in dem Fall BaseIO::BaseIO) muss alle virtual base classes konstruieren.<br />
C++ verlangt das.</p>
<pre><code class="language-cpp">BaseIO(Var &amp;v):BaseWriter(v),BaseReader(v) { }
// -&gt;
    BaseIO(Var &amp;v):Base(v), BaseWriter(v),BaseReader(v) { }
</code></pre>
<p>Frag mich bloss nicht wieso das so ist, dazu müsste ich anfangen zu denken, und das mag ich jetzt nicht <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>
</blockquote>
<p>Durch die 'virtual' Ableitung hast du nur eine Version von Base in deiner BaseIO-Klasse, die aber auf zwei Wegen erreicht werden kann. Also wären auf regulärem Weg auch zwei Ctor-Aufrufe dort fällig (einmal von BaseWriter und einmal von BaseReader) - und damit eine Mehrdeutigkeit, welcher nun tatsächlich ausgeführt werden soll. Um diese Mehrdeutigkeit aufzulösen, wird die Verantwortung der untersten Kindklasse übertragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1331260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331260</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 24 Jul 2007 06:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu protected const member on Tue, 24 Jul 2007 08:37:38 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">virtual public Base
</code></pre>
<p>-&gt; der ctor der &quot;most derived class&quot; (in dem Fall BaseIO::BaseIO) muss alle virtual base classes konstruieren.<br />
C++ verlangt das.</p>
<pre><code class="language-cpp">BaseIO(Var &amp;v):BaseWriter(v),BaseReader(v) { }
// -&gt;
    BaseIO(Var &amp;v):Base(v), BaseWriter(v),BaseReader(v) { }
</code></pre>
<p>Frag mich bloss nicht wieso das so ist, dazu müsste ich anfangen zu denken, und das mag ich jetzt nicht <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>
</blockquote>
<p>Durch die 'virtual' Ableitung hast du nur eine Version von Base in deiner BaseIO-Klasse, die aber auf zwei Wegen erreicht werden kann. Also wären auf regulärem Weg auch zwei Ctor-Aufrufe dort fällig (einmal von BaseWriter und einmal von BaseReader) - und damit eine Mehrdeutigkeit, welcher nun tatsächlich ausgeführt werden soll. Um diese Mehrdeutigkeit aufzulösen, wird die Verantwortung der untersten Kindklasse übertragen.</p>
</blockquote>
<p>Ahh, danke für die Antwort. Fand das auch schon irgendwie seltsam, dass ich zweimal etwas an Base durchreiche. <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/1331300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1331300</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 24 Jul 2007 08:37:38 GMT</pubDate></item></channel></rss>