<?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[Zugriff auf mehrere Interfaces über einzelnen Zeiger]]></title><description><![CDATA[<p>Guten Abend miteinander, ich habe eine Frage zu Polymorphie im Zusammenhang mit Mehrfachvererbung. Gegeben ist folgende Vererbungsbeziehung:</p>
<pre><code class="language-cpp">// A und B sind im Prinzip Interfaces
class D : public A, public B { ... };
</code></pre>
<p>Zusätzlich habe ich eine Client-Klasse <code>C</code> , die mit Objekten arbeitet, welche von beiden abstrakten Klassen <code>A</code> und <code>B</code> abgeleitet sind. Momentan besitzt <code>C</code> zwei polymorpher Zeiger (1 pro Interface), die beide auf das gleiche Objekt (z.B. vom dynamischen Typ <code>D</code> ) verweisen. Diesen Ansatz finde ich jedoch nicht sehr schön, weil man im Prinzip redundante Informationen speichert und innerhalb von <code>C</code> jeweils unterscheiden muss, über welchen Zeiger man auf die Funktionalität zugreift.</p>
<pre><code class="language-cpp">class C
{
    A* a;
    B* b;
};
</code></pre>
<p>Im Prinzip suche ich eine Möglichkeit, über <strong>einen</strong> Zeiger (kann auch ein Objekt mit Zeigersemantik sein) die virtuellen Methoden von <code>A</code> <strong>und</strong> <code>B</code> anzusprechen, <strong>ohne</strong> das konkrete Objekt <code>D</code> zu kennen. Also ohne dass die Klasse <code>C</code> ein Template wird. Gut wäre auch, ich müsste die bestehende Vererbungshierarchie von <code>A</code> , <code>B</code> , <code>D</code> nicht verändern. Mir ist klar, dass sich das Problem mit einer abstrakten Zwischenklasse, die von <code>A</code> und <code>B</code> erbt und als Basisklasse von <code>D</code> agierte, lösen würde.</p>
<p>Oder nochmals zur Verdeutlichung, gut wäre sowas:</p>
<pre><code class="language-cpp">// Abstrakte Hilfsklasse für Zugriff auf Funktionen von A und B
class AB : public A, public B { ... };

class C
{
    AB* ab; // Initialisierung mit gecastetem Zeiger D* -&gt; A* -&gt; AB*
};
</code></pre>
<p>Nur führt das meines Wissens zu undefiniertem Verhalten: Der Downcast <code>A*</code> -&gt; <code>AB*</code> ist ungültig, weil der dynamische Typ nicht <code>AB</code> oder davon abgeleitet, sondern <code>D</code> ist.</p>
<p>Hat jemand eine Idee oder einen Alternativvorschlag, da das gewünschte Verhalten wahrscheinlich nicht 1:1 realisierbar ist? Würdet ihr bei zwei einzelnen Zeigern bleiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277736/zugriff-auf-mehrere-interfaces-über-einzelnen-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 15:27:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277736.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Nov 2010 16:48:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 16:54:54 GMT]]></title><description><![CDATA[<p>Guten Abend miteinander, ich habe eine Frage zu Polymorphie im Zusammenhang mit Mehrfachvererbung. Gegeben ist folgende Vererbungsbeziehung:</p>
<pre><code class="language-cpp">// A und B sind im Prinzip Interfaces
class D : public A, public B { ... };
</code></pre>
<p>Zusätzlich habe ich eine Client-Klasse <code>C</code> , die mit Objekten arbeitet, welche von beiden abstrakten Klassen <code>A</code> und <code>B</code> abgeleitet sind. Momentan besitzt <code>C</code> zwei polymorpher Zeiger (1 pro Interface), die beide auf das gleiche Objekt (z.B. vom dynamischen Typ <code>D</code> ) verweisen. Diesen Ansatz finde ich jedoch nicht sehr schön, weil man im Prinzip redundante Informationen speichert und innerhalb von <code>C</code> jeweils unterscheiden muss, über welchen Zeiger man auf die Funktionalität zugreift.</p>
<pre><code class="language-cpp">class C
{
    A* a;
    B* b;
};
</code></pre>
<p>Im Prinzip suche ich eine Möglichkeit, über <strong>einen</strong> Zeiger (kann auch ein Objekt mit Zeigersemantik sein) die virtuellen Methoden von <code>A</code> <strong>und</strong> <code>B</code> anzusprechen, <strong>ohne</strong> das konkrete Objekt <code>D</code> zu kennen. Also ohne dass die Klasse <code>C</code> ein Template wird. Gut wäre auch, ich müsste die bestehende Vererbungshierarchie von <code>A</code> , <code>B</code> , <code>D</code> nicht verändern. Mir ist klar, dass sich das Problem mit einer abstrakten Zwischenklasse, die von <code>A</code> und <code>B</code> erbt und als Basisklasse von <code>D</code> agierte, lösen würde.</p>
<p>Oder nochmals zur Verdeutlichung, gut wäre sowas:</p>
<pre><code class="language-cpp">// Abstrakte Hilfsklasse für Zugriff auf Funktionen von A und B
class AB : public A, public B { ... };

class C
{
    AB* ab; // Initialisierung mit gecastetem Zeiger D* -&gt; A* -&gt; AB*
};
</code></pre>
<p>Nur führt das meines Wissens zu undefiniertem Verhalten: Der Downcast <code>A*</code> -&gt; <code>AB*</code> ist ungültig, weil der dynamische Typ nicht <code>AB</code> oder davon abgeleitet, sondern <code>D</code> ist.</p>
<p>Hat jemand eine Idee oder einen Alternativvorschlag, da das gewünschte Verhalten wahrscheinlich nicht 1:1 realisierbar ist? Würdet ihr bei zwei einzelnen Zeigern bleiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984726</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Nov 2010 16:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 17:50:39 GMT]]></title><description><![CDATA[<p>Ich bin mir nicht sicher, aber ich nehme einfach an, dass die Clientklasse C nicht direkt auf D zugreifen darf. Meine Idee wäre nun der pImpl (Pointer to implementation). Dort könntest du dir zwei Methoden implementieren welche die Basistypen zurückgeben und die dynamische Klasse vor dem Client schützen. Somit würde Klient nur noch einen Zeiger haben. Schneller macht es das Konzept sicher nicht <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/1984765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984765</guid><dc:creator><![CDATA[NichtSicherObsNutzt]]></dc:creator><pubDate>Tue, 23 Nov 2010 17:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 18:11:21 GMT]]></title><description><![CDATA[<p>Man könnte sich einen richtig smarten smart pointer bauen, der die Schnittstellen erbt und sie an seinen pointer delegiert oder entsprechnde Konvertierungsoperatoren anbietet. Für die Frage, ob man das wirklich kann ist mir der Tach aber schon eindeutig zu alt. Vielleicht morgen früh nochmal drüber nachdenken <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/1984768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984768</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 23 Nov 2010 18:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 22:07:14 GMT]]></title><description><![CDATA[<p>NichtSicherObsNutzt schrieb:</p>
<blockquote>
<p>Ich bin mir nicht sicher, aber ich nehme einfach an, dass die Clientklasse C nicht direkt auf D zugreifen darf.</p>
</blockquote>
<p>Ja, wir können annehmen, dass nur die beiden polymorphen Zeiger <code>A*</code> und <code>B*</code> bekannt sind. Es geht dabei weniger um Kapselung im Sinne von <code>private</code> als um Abstraktion (Polymorphie durch Basisklassenzeiger). <code>D</code> ist nur eine mögliche Klasse.</p>
<p>NichtSicherObsNutzt schrieb:</p>
<blockquote>
<p>Meine Idee wäre nun der pImpl (Pointer to implementation). Dort könntest du dir zwei Methoden implementieren welche die Basistypen zurückgeben und die dynamische Klasse vor dem Client schützen. Somit würde Klient nur noch einen Zeiger haben.</p>
</blockquote>
<p>Du meinst wahrscheinlich sowas?</p>
<pre><code class="language-cpp">class Impl
{
    ... // Implementierung
    public:
        A* GetA();
        B* GetB();    
};
</code></pre>
<p>Zwar hätte dann <code>C</code> nur noch einen <code>Impl*</code> als Zeiger, allerdings müsste man die beiden Basistypen immer noch separat ansprechen, nur halt indirekt. Ich versuche, über <strong>einen</strong> Zeiger (oder was auch immer) auf die Schnittstellen von <strong>beiden</strong> Interfaces zuzugreifen, am besten ohne Fallunterscheidung.</p>
<p>brotbernd schrieb:</p>
<blockquote>
<p>Man könnte sich einen richtig smarten smart pointer bauen, der die Schnittstellen erbt und sie an seinen pointer delegiert oder entsprechnde Konvertierungsoperatoren anbietet.</p>
</blockquote>
<p>An sowas wie Smart-Pointers habe ebenfalls ich gedacht, daher mein Kommentar bezüglich &quot;Objekt mit Zeigersemantik&quot;. Jedoch bin ich bisher bei der Vererbung nicht weitergekommen, weil dadurch unportable Cross-Casts wie im Beispiel mit <code>AB</code> erforderlich sind. Mehrere Konvertierungsoperatoren fallen wohl auch aus, da die Überladungsauflösung nicht anhand auf dem Objekt aufgerufener Memberfunktionen durchgeführt wird.</p>
<p>Es kann sehr gut sein, dass es keine C++-Lösung für genau dieses Problem gibt. Aber kennt vielleicht jemand ein Design-Pattern oder eine Technik, mit der man etwas Ähnliches erreichen kann? Sowas dürfte generell in der OOP ab und zu vorkommen, wenn mehrere Interfaces implementiert werden. Würde man z.B. in Java ebenfalls mehrere Referenzen unterschiedlichen Typs auf das gleiche Objekt benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984887</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Nov 2010 22:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 22:23:41 GMT]]></title><description><![CDATA[<p>Flyweight und Mediator sind deinem Design ähnlich. Aber soweit ich dies überblicke werden diese dein Problem nicht lösen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984898</guid><dc:creator><![CDATA[NichtSicherObsNutzt]]></dc:creator><pubDate>Tue, 23 Nov 2010 22:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 22:52:46 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Zusätzlich habe ich eine Client-Klasse <code>C</code> , die mit Objekten arbeitet, welche von beiden abstrakten Klassen <code>A</code> und <code>B</code> abgeleitet sind.</p>
</blockquote>
<p>Das heißt, es gibt mehrere andere Klassen ähnlich C, die <em>alle</em> von A <em>und</em> B (und eventuell noch anderen) abgeleitet sind?</p>
<p>Wenn C mit den Methoden von A und B arbeiten können soll, ist eigentlich die Klasse AB deren Vereinigung und folglich D wiederum von AB abgeleitet.</p>
<p>Aber warum:</p>
<blockquote>
<p>ohne das konkrete Objekt D zu kennen.</p>
</blockquote>
<p>Auf wessen virtuelle Methoden soll C zugreifen, wenn nicht die von einem konkreten Objekt D (oder AB oder E)?</p>
<p>Mach mal ein Beispiel, was für Klassen oder Methoden das so sind und warum C D nicht kennen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984908</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Tue, 23 Nov 2010 22:52:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Tue, 23 Nov 2010 23:29:34 GMT]]></title><description><![CDATA[<p>NichtSicherObsNutzt schrieb:</p>
<blockquote>
<p>Flyweight und Mediator sind deinem Design ähnlich. Aber soweit ich dies überblicke werden diese dein Problem nicht lösen können.</p>
</blockquote>
<p>Flyweight geht in eine andere Richtung, Mediator muss ich mir mal genau anschauen. Aber auf den ersten Blick sehe ich es auch so, dass diese Patterns eher nicht auf mein Design zutreffen. Aber vielen Dank für die Hinweise!</p>
<p>minastaros schrieb:</p>
<blockquote>
<p>Das heißt, es gibt mehrere andere Klassen ähnlich C, die <em>alle</em> von A <em>und</em> B (und eventuell noch anderen) abgeleitet sind?</p>
</blockquote>
<p>Nein, das &quot;welche&quot; bezog sich auf &quot;Objekte&quot;. <code>C</code> ist eine unabhängige Klasse. Zusätzlich gibt es Klassen, die eines der Interfaces <code>A</code> oder <code>B</code> implementieren, sowie solche, die beide implementieren (z.B. die Klasse <code>D</code> ). Um letztere geht es in diesem Beispiel.</p>
<p>minastaros schrieb:</p>
<blockquote>
<p>Wenn C mit den Methoden von A und B arbeiten können soll, ist eigentlich die Klasse AB deren Vereinigung und folglich D wiederum von AB abgeleitet.</p>
</blockquote>
<p>So soll es ja nicht sein, wegen</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Gut wäre auch, ich müsste die bestehende Vererbungshierarchie von A, B, D nicht verändern. Mir ist klar, dass sich das Problem mit einer abstrakten Zwischenklasse, die von A und B erbt und als Basisklasse von D agierte, lösen würde.</p>
</blockquote>
<p>minastaros schrieb:</p>
<blockquote>
<p>Aber warum:</p>
<blockquote>
<p>ohne das konkrete Objekt D zu kennen.</p>
</blockquote>
<p>Auf wessen virtuelle Methoden soll C zugreifen, wenn nicht die von einem konkreten Objekt D (oder AB oder E)?</p>
</blockquote>
<p>Auf die virtuellen Methoden zweier abstrakter Basisklassen (Interfaces), hier von <code>A</code> und <code>B</code> . Zur Veranschaulichung des Status Quo (kein UML):</p>
<pre><code>+---+   +---+
| A |   | B |           +-----+
+---+   +---+           |  C  |
  |       |             +-----+
  +---+---+             | A* -+---------&gt;+---+
      |                 | B* -+---------&gt;| D |
    +---+               +-----+          +---+
    | D |               
    +---+
</code></pre>
<p>Ganz normale Polymorphie über Basisklassenzeiger, nur halt eben in Kombination mit Mehrfachvererbung. Dadurch zeigen <code>A*</code> und <code>B*</code> auf das gleiche Objekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984915</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Nov 2010 23:29:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 06:42:32 GMT]]></title><description><![CDATA[<p>Naja, mit &quot;Beispiel&quot; meinte ich eher eine Idee, in welche Richtung das gehen soll, A, B oder D sind halt recht abstrakt. Also z.B. sind A und B eher &quot;Eigenschaften&quot;, so z.B.:</p>
<p>A: HatVierBeine<br />
B: Nahrungsaufnahme</p>
<p>und deren Methoden sind dann z.B.:</p>
<p>A::rennen( )<br />
A::gassiGehen( )</p>
<p>B::fressen( )<br />
B::schlabbern( )</p>
<p>demnach wäre D z.B. ein Hund - oder ein Meerschweinchen (und im nicht erlaubten Fall einer gemeinsamen Klasse AB wäre diese dann ein &quot;Kuscheltier&quot;).</p>
<p>So, und mit C willst Du dann direkt auf die Basisklassenmethoden zugreifen, ohne direkt einen Pointer auf D zu haben, richtig? Also im Beispiel alle Objekte A::rennen lassen oder B::fressen, auch wenn es kein D ist sondern ein E ( E = &quot;Kegelbruder&quot; ).</p>
<p>Deine Aufgabe klingt sehr interessant, ich versuche nur zu verstehen, woher Du auf Deine Einschränkung (keine Klasse AB) kommst bzw. was Du damit bezweckst. Das heißt: Gib den Dingen mal sprechende Namen! <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/1984951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984951</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Wed, 24 Nov 2010 06:42:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 08:59:41 GMT]]></title><description><![CDATA[<p>Am besten ist es wohl, ich nehme gleich das Beispiel, das mich überhaupt zu dieser Designfrage gebracht hat. Und zwar geht es um eine kleine GUI-Bibliothek, die ich entwickle.</p>
<p>Ich habe nun eine Klasse <code>Button</code> (-&gt; D), die von den Klassen <code>Widget</code> (-&gt; A) und <code>StringAttributable</code> (-&gt; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> erbt. Erstere ist die Basisklasse für GUI-Komponenten, zweitere stellt Funktionalität zur Speicherung von Text zur Verfügung. In der View-Klasse für Text (-&gt; C; Klasse, welche die grafische Darstellung von Text übernimmt) brauche ich nun beide Schnittstellen, weil <code>Widget</code> Informationen über Grösse und Position der Komponente speichert und <code>StringAttributable</code> den Text und dessen Formatierung kennt. Ich frage also in der View-Klasse <code>TextView</code> die Eigenschaften von <code>Button</code> über die beiden Basisklassen <code>Widget</code> und <code>StringAttributable</code> ab.</p>
<pre><code class="language-cpp">class Button : public Widget, public StringAttributable { ... };

class TextView
{
    Widget*             a;
    StringAttributable* b;
};
</code></pre>
<p>P.S.: Wenn jemand einen besseren Namen für <code>StringAttributable</code> kennt, wäre ich ihm/ihr sehr verbunden. <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/1984990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984990</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 24 Nov 2010 08:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 09:21:00 GMT]]></title><description><![CDATA[<p>Denkst du nicht irgendwie in die falsche Richtung? Wenn dein Design die beiden Interfaces trennt, sollte doch eine Klasse, die beide benutzt, nicht davon ausgehen, dass sie zusammenhängen. Du könntest ja z.B. Button von Widget ableiten, aber StringAttributable als Member implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1984994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1984994</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 24 Nov 2010 09:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 17:15:13 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Wenn dein Design die beiden Interfaces trennt, sollte doch eine Klasse, die beide benutzt, nicht davon ausgehen, dass sie zusammenhängen.</p>
</blockquote>
<p>Das ist ein guter Punkt. Normalerweise müssen die Interfaces nicht derart zusammenhängen. In meinem Code kann allerdings davon ausgegangen werden, dass beide polymorphen Basisklassenzeiger auf das gleiche Objekt zeigen. Diese Beschränkung ist etwas unschön, vielleicht gibt es ja eine sehr elegante Alternative.</p>
<p>manni66 schrieb:</p>
<blockquote>
<p>Du könntest ja z.B. Button von Widget ableiten, aber StringAttributable als Member implementieren.</p>
</blockquote>
<p>Ich habe hier bewusst Vererbung statt Komposition gewählt, aber im Prinzip hast du Recht: Man ist wahrscheinlich flexibler mit zwei separaten Zeigern, vor allem im Hinblick auf künftige Design-Umstellungen. Trotzdem bin ich diesbezüglich etwas skeptisch, zwei Zeiger auf das gleiche Objekt zu haben und durch jeden nur die Hälfte der Funktionalität zu nutzen.</p>
<p>Falls jemand bereits vor einem ähnlichen Problem gestanden ist oder einen guten Link dazu kennt, würde ich mich über eine Antwort freuen. Natürlich gilt das für alle Vorschläge! <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/1985265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985265</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 24 Nov 2010 17:15:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 18:15:41 GMT]]></title><description><![CDATA[<p>Du kannst dir den 2. Zeiger durch dynamic_cast aus dem ersten zaubern.</p>
<p>Allerdings würde ich trotzdem empfehlen beide Zeiger als Member zu halten, da dynamic_cast bei einigen Implementierungen nicht unbedingt schnell ist. Bei jedem Funktionsaufruf zu Casten wäre daher u.U. eine Bremse (je nachdem wie CPU Aufwändig die Funktionen sind, bei sehr einfachen Funktionen auf jeden Fall).</p>
<blockquote>
<p>Falls jemand bereits vor einem ähnlichen Problem gestanden ist oder einen guten Link dazu kennt, würde ich mich über eine Antwort freuen. Natürlich gilt das für alle Vorschläge!</p>
</blockquote>
<p>Kannst du etwas näher darauf eingehen was für Funktionen in den beiden Interfaces drinnen sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985294</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 24 Nov 2010 18:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 22:17:24 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Du kannst dir den 2. Zeiger durch dynamic_cast aus dem ersten zaubern.</p>
</blockquote>
<p>Interessant, wieder was gelernt! Aber ich habe schon beide Zeiger <code>A*</code> und <code>B*</code> , das ist nicht das Problem.</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Kannst du etwas näher darauf eingehen was für Funktionen in den beiden Interfaces drinnen sind?</p>
</blockquote>
<p>Sicher. Leicht vereinfacht (ohne Namespaces, Const-Referenzen etc.) sieht das so aus:</p>
<pre><code class="language-cpp">class Widget
{
  public:
    // Position des Mittelpunkts
    void      SetPosition(Vector2f position);
    Vector2f  GetPosition() const;

    // Abmessungen der Komponente (umschliessendes Rechteck)
    void      SetSize(Vector2f size);
    Vector2f  GetSize() const;

    // Mit Benutzer interagierbar / grau hinterlegt?
    void      SetEnabled(bool enabled);
    bool      IsEnabled() const;
};

class StringAttributable
{
  public:
    // String des darzustellenden Textes
    void      SetString(String);
    String    GetString() const;

    // Text-Ausrichtung (linksbündig, zentriert, ...)
    void      SetTextAlignment(TextAlign alignment);
    TextAlign GetTextAlignment() const;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1985411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985411</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 24 Nov 2010 22:17:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 22:31:43 GMT]]></title><description><![CDATA[<p>Hm, Du musst ja dem <em>einzelnen</em> Pointer in C (bzw. TextView) einen Typ geben. Und das kann (nach Definition) weder A noch B sein.</p>
<p>Du könntest allerdings tatsächlich eine Hilfsklasse AB erstellen, die sich genauso wie Button auch von Widget und StringAttributable ableitet. Das stände dann auf einer Ebene wie Button.</p>
<p>Der Pointer in TextView könnte dann von diesem Typ sein. Nun musst Du TextView noch den Button mitteilen, vielleicht in der Art</p>
<pre><code class="language-cpp">myTextView.setAB( reinterpret_cast&lt; AB* &gt;( &amp;myButton );
</code></pre>
<p>In TextView solltest Du dann alle Methoden über den Pointer aufrufen können. dynamic_cast hat hier nicht funktioniert, nur der reinterpret. Allerdings ist das ein wüstes Gecaste. Und wie sich das verhält, wenn Button jetzt noch von einer weiteren Klasse erbt, AB aber nicht --- noch nicht ausprobiert.</p>
<p>Gute Nacht erstmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985417</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Wed, 24 Nov 2010 22:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 23:21:16 GMT]]></title><description><![CDATA[<p>minastaros schrieb:</p>
<blockquote>
<p>Hm, Du musst ja dem <em>einzelnen</em> Pointer in C (bzw. TextView) einen Typ geben. Und das kann (nach Definition) weder A noch B sein.</p>
</blockquote>
<p>Genau, vor diesem Problem stehe ich auch. <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>Wie schon angedeutet ist das kaum 1:1 mit einem einzelnen Zeiger vernünftig lösbar. Aber vielleicht übersehe ich grundlegende Alternativen. Das mit dem <code>reinterpret_cast</code> wäre ja ähnlich wie mein Versuch mit <code>AB</code> – beides undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985420</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 24 Nov 2010 23:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Wed, 24 Nov 2010 23:31:40 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21506">@minastaros</a>:<br />
Probier dein wildes Gecaste mal wenn das Widget von B, A erbt, AB aber A, B.<br />
Dann knallts nämlich hübsch <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>-&gt; Finger davon lassen</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>:<br />
OK. Und welche Klasse möchte nun sowohl auf Widget als auch auf StringAttributable zugreifen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985424</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 24 Nov 2010 23:31:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Thu, 25 Nov 2010 08:58:16 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>:<br />
OK. Und welche Klasse möchte nun sowohl auf Widget als auch auf StringAttributable zugreifen?</p>
</blockquote>
<p>Die View-Klasse <code>TextView</code> , welche Text darstellt. <code>Widget</code> benötige ich vor allem für die Abmessungen (Grösse und Position), <code>StringAttributable</code> für text-spezifische Merkmale (String, Formatierung). Diese Eigenschaften der GUI-Komponente werden über die beiden polymorphen Basisklassenzeiger von <code>TextView</code> abgefragt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985474</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Nov 2010 08:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Thu, 25 Nov 2010 11:42:24 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Dann knallts nämlich hübsch <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 />
-&gt; Finger davon lassen</p>
</blockquote>
<p>Deshalb ist die ganze Geschichte mit Casten und somit Aufbrechen der Klassen etwas fragwürdig. Aber ein Cast wäre halt der einzige Weg, um eine gemeinsame <em>abgeleitete</em> Klasse AB zu vermeiden, denn <em>irgendeinen</em> Typ muss der Pointer ja bekommen.</p>
<p>Mal ein ganz anderer Ansatz:<br />
Wenn die Anzahl der zu veröffentlichenden Methoden, die TextView benötigt, begrenzt ist, könnte man auch Widget und StringAttributable <em>von</em> einer gemeinsamen Klasse ableiten (hier: Graph). Diese würde virtuell alle benötigten Methoden implementieren (das ist der Nachteil, aber wie gesagt, wenn es um eine begrenzte Anzahl geht...). Widget und StringAttributable (oder auch andere) können dann die Methoden überschreiben oder nicht.</p>
<p>Der Pointer in TextView jedenfalls wäre dann vom Typ Graph, und über ihn kann man jede Methode gefahrlos aufrufen. Ein Button <em>kann</em> eine oder beide der &quot;Eigenschaftsklassen&quot; implementieren, muss es aber nicht, oder kann noch von weiteren Klassen erben. Die Ableitungen <em>sind</em> jedenfalls alle &quot;ein Graph&quot;.</p>
<p>Hier mal ein Versuch mit einer zusätzlichen Klasse &quot;Label&quot;, bei der die Vererbungsreihenfolge versuchsweise getauscht ist. TextWiew hab ich mal Referenzen gegeben, aber geht mit Pointern auch (man verzeihe mir die kastrierten Setter-Methoden und fehlende Destructoren...):</p>
<pre><code class="language-cpp">/* Inheritance tree:

             +-------+         +----------+
             | Graph | · · · · | TextView |
             +-------+         +----------+
              /     \
      +--------+   +-------------+
      | Widget |   | StringAttr. |
      +--------+   +-------------+
             \  / \  /
     +---------+   +-------+
     | Button  |   | Label |
     +---------+   +-------+

 */

class Graph
{
public:
    virtual void SetPosition( )                     { return; }
    virtual void SetSize( )                         { return; }

    virtual void SetString( )                       { return; }
    virtual void SetTextAlignment( )                { return; }
};
//____________________________________________________________________________

class Widget : virtual public Graph
{
public:
    void SetPosition( )                     { cout &lt;&lt; &quot;Got Position.&quot; &lt;&lt; endl; }
    void SetSize( )                         { cout &lt;&lt; &quot;Got Size.&quot; &lt;&lt; endl; }
};
//____________________________________________________________________________

class StringAttributable : virtual public Graph
{
public:
    void SetString( )                       { cout &lt;&lt; &quot;Got String.&quot; &lt;&lt; endl; }
    void SetTextAlignment( )                { cout &lt;&lt; &quot;Got SetTextAlignment.&quot; &lt;&lt; endl; }
};
//____________________________________________________________________________

class Button : public Widget, public StringAttributable
{
public:
    Button( );
};

Button::Button( )
: Graph( )
, Widget( )
, StringAttributable( )
{
    cout &lt;&lt; &quot;Hello I am a Button.&quot; &lt;&lt; endl;
}
//____________________________________________________________________________

class Label : public StringAttributable, public Widget
{
public:
    Label( );
};

Label::Label( )
: Graph( )
, StringAttributable( )
, Widget( )
{
    cout &lt;&lt; &quot;Hello I am a Label.&quot; &lt;&lt; endl;
}
//____________________________________________________________________________

class TextView
{
public:
    TextView( Graph&amp; graph_ ) : graph( graph_ ) { }
    void doSomething( );
private:
    Graph&amp; graph;
};

void TextView::doSomething( )
{
    graph.SetPosition( );
    graph.SetSize( );
    graph.SetString( );
    graph.SetTextAlignment( );
}
//____________________________________________________________________________

int main( )
{
	Button myButton;
	TextView myViewButton( myButton );
	myViewButton.doSomething( );

    Label myLabel;
    TextView myViewLabel( myLabel );
    myViewLabel.doSomething( );

	return 0;
}
</code></pre>
<p>Ausgabe:<br />
`Hello I am a Button.</p>
<p>Got Position.</p>
<p>Got Size.</p>
<p>Got String.</p>
<p>Got SetTextAlignment.</p>
<p>Hello I am a Label.</p>
<p>Got Position.</p>
<p>Got Size.</p>
<p>Got String.</p>
<p>Got SetTextAlignment.`</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985544</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Thu, 25 Nov 2010 11:42:24 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Thu, 25 Nov 2010 14:11:34 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a>:<br />
Gibt es Konstellationen in denen es unpraktisch wäre die Text-Widgets von einer &quot;TestWidget&quot; Klasse (&quot;AB&quot;) abzuleiten?<br />
Wenn nein, dann würde ich das so machen.</p>
<p>Sonst würde ich - wenn sonst nichts dagegen spricht - eine Möglichkeit schaffen nur den Widget-Zeiger zu übergeben, wobei die TextView sich den StringAttributable-Zeiger dann selbst castet.<br />
Intern hält sich die TextView dann zwar zwei Zeiger, aber für den User ist es nicht unnötig umständlich, weil er nur einen übergeben muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985628</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 25 Nov 2010 14:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Thu, 25 Nov 2010 17:30:49 GMT]]></title><description><![CDATA[<p>minastaros schrieb:</p>
<blockquote>
<p>Mal ein ganz anderer Ansatz:<br />
Wenn die Anzahl der zu veröffentlichenden Methoden, die TextView benötigt, begrenzt ist, könnte man auch Widget und StringAttributable <em>von</em> einer gemeinsamen Klasse ableiten (hier: Graph). Diese würde virtuell alle benötigten Methoden implementieren (das ist der Nachteil, aber wie gesagt, wenn es um eine begrenzte Anzahl geht...).</p>
</blockquote>
<p>Ich würde die beiden Interfaces schon gerne unabhängig halten. GUI-Komponenten können z.B. durchaus von <code>Widget</code> erben, aber nicht von <code>StringAttributable</code> . Und Dummy-Methoden, die nichts tun (oder sowas wie <code>UnupportedOperationException</code> werfen), gehen mir stark gegen den Strich. <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>hustbaer schrieb:</p>
<blockquote>
<p>Gibt es Konstellationen in denen es unpraktisch wäre die Text-Widgets von einer &quot;TestWidget&quot; Klasse (&quot;AB&quot;) abzuleiten?<br />
Wenn nein, dann würde ich das so machen.</p>
</blockquote>
<p>Mir fällt da auf die Schnelle nichts ein, aber ich habe eher grundlegendere Bedenken: Der Vorteil, durch Mehrfachvererbung unabhängige Klassen zu kombinieren, ohne Zusatzcode zu schreiben, geht verloren. Ich habe noch andere Interfaces, und es werden wohl noch ein paar dazukommen – der Gedanke, für jede benötigte Kombination eine zusätzliche Klasse zu schreiben, gefällt mir nicht besonders. Gerade da ich die Vererbungshierarchie einigermassen flach und intuitiv halten möchte. <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>hustbaer schrieb:</p>
<blockquote>
<p>Sonst würde ich - wenn sonst nichts dagegen spricht - eine Möglichkeit schaffen nur den Widget-Zeiger zu übergeben, wobei die TextView sich den StringAttributable-Zeiger dann selbst castet.<br />
Intern hält sich die TextView dann zwar zwei Zeiger, aber für den User ist es nicht unnötig umständlich, weil er nur einen übergeben muss.</p>
</blockquote>
<p>Ja, das wäre eine Möglichkeit. Oder halt ein Template-Konstruktor, falls der konkrete Typ bekannt sein sollte... Wobei ich dann auch die Klasse zum Template machen könnte. Naja...</p>
<p>Bisher ist ja schon einiges zusammengekommen. Danke schon mal an alle für die Vorschläge und die investierte Zeit (besonders minastaros und hustbaer)! Mal schauen, wie ich das nun löse... Vielleicht nehme ich vorerst die zwei Zeiger und behalte mir andere Möglichkeiten im Hinterkopf. Kann auch sein, dass sich das Ganze plötzlich durch irgendeine Design-Entscheidung erübrigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985758</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 25 Nov 2010 17:30:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Thu, 25 Nov 2010 18:33:53 GMT]]></title><description><![CDATA[<p>Ich würde eher einen Adapter dazwischenschalten, bevor ich die View-Klasse zum Template machen und/oder ihr einen Template-Ctor verpasse.</p>
<p>Die View-Klasse zum Template zu machen wäre auch doof denke ich, da man ja vermutlich das &quot;betrachtete&quot; Widget zur Laufzeit auswechseln können soll. Und wenn dann nicht alle Widget zwischen denen man wechseln will den selben Typ haben, geht das nicht mehr so ohne Weiteres.</p>
<pre><code class="language-cpp">class TextViewSourceBase
{
public:
    // einfache Variante:
    virtual StringAttributable&amp; GetStringAttributable() = 0;
    virtual Widget&amp; GetWidget() = 0;

    // die aufwendigere Variante wäre alle Funktionen weiterzuleiten
};

template &lt;class T&gt;
class TextViewSource : public TextViewSourceBase
{
    // kann man dann spezialisieren wie man will, evtl. mit Hilfe von 
    // boost::is_base_and_derived und diversen Template-Tricks
};

class TextView
{
public:
    explicit TextView(shared_ptr&lt;TextViewSourceBase&gt; const&amp; source);
    void SetSource(shared_ptr&lt;TextViewSourceBase&gt; const&amp; source);
};
</code></pre>
<p>Das Doofe an der Sache: man kann die Adapter nicht by-value rumreichen, da der konkrete Typ nicht feststeht. D.h. man muss entweder klonen oder Ownership übergeben (finde ich immer doof) oder eben Shared-Ownership verwenden (shared_ptr etc.).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1985792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1985792</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 25 Nov 2010 18:33:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Fri, 26 Nov 2010 17:23:08 GMT]]></title><description><![CDATA[<p>Mit dem Template hast du Recht, direkt hätte es ein paar Nachteile. Beim Adapter sehe ich allerdings keinen grossen Unterschied mehr zu den beiden rohen, separaten Pointers. Man hat da halt ein einzelnes Objekt mit eigener Speicherverwaltung (als <code>shared_ptr</code> oder so eingepackt). Jedoch sind bei mir Speicherverwaltung und Besitzverhältnisse nicht gerade ein Problem, da vorläufig nur passive Verweise im Spiel sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986341</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Nov 2010 17:23:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Fri, 26 Nov 2010 18:36:28 GMT]]></title><description><![CDATA[<p>Dann nen Template-Ctor mit <code>enable_if&lt;is_base_and_derived&lt;A, X&gt;::value &amp;&amp; is_base_and_derived&lt;B, X&gt;::value&gt;</code> (sinngemäss).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986399</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 26 Nov 2010 18:36:28 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Fri, 26 Nov 2010 19:24:14 GMT]]></title><description><![CDATA[<p>Die Vererbungsbeziehung könnte doch implizit geprüft werden, wenn ich im Konstruktor zwei automatische Upcasts <code>X* -&gt; A*</code> und <code>X* -&gt; B*</code> habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986426</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Fri, 26 Nov 2010 19:51:36 GMT]]></title><description><![CDATA[<p>Wenn du keine weiteren Ein-Parameter-Template-Ctors brauchst, dann ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986446</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:51:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff auf mehrere Interfaces über einzelnen Zeiger on Fri, 26 Nov 2010 19:52:41 GMT]]></title><description><![CDATA[<p>Stimmt, SFINAE ist sonst nicht dabei. Danke für den Hinweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986448</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:52:41 GMT</pubDate></item></channel></rss>