<?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[Vererbungsproblem]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein etwas verzwicktes problem! Ich nutze eine Bibliothek welche mir verschiedene nette Klassen vorgibt welche voneinander abgeleitet sind. Jetzt möchte ich eigene Klassen davon ableiten, allerdings sollen diese ein gemeinsammes, von mir definirtes &quot;Interface&quot; haben, also gleiche Functionen teilen. Meine Idee sieht ungefähr so aus:</p>
<p>Eigene Klasse ← Bibliotheksklasse 2 oder 3 oder ... ← Bibliotheksklasse 1<br />
↑<br />
Interfaceklasse</p>
<p>Da die eigene Klasse von vielen verschiedenen Bibliotheksklassen abgeleitet werden kann, kann ich die Interfaceklasse nicht direct &quot;dazwischen&quot; legen sondern muss sie als zusätzliche Basisklasse nutzen.</p>
<p>Die verschiedenen Eigenen Klassen werden nun zur laufzeit erzeugt, allerdings kenne ich die genaue Klasse nicht, die Erzeugung wird durch eine art Factory erledigt.</p>
<p>Nun das Problem: Ich muss einige Funktionen von Bibliotheksklasse 1 verwenden und gleichzeitig auf Funktionen der Interfaceklasse zugreifen!</p>
<p>wenn ich die klasse so erzeuge:</p>
<pre><code>Bibliotheksklasse 1 = new Eigene Klasse()
</code></pre>
<p>ist es mir nicht möglich die Interfacefunktionen zu nutzen, da ein cast unmöglich scheint.</p>
<p>Andersherum</p>
<pre><code>Interfaceklasse = new Eigene Klasse()
</code></pre>
<p>kann ich wieder die Funktionen der Bibliotheksklasse nicht verwenden!</p>
<p>Gibt es eine möglichkeit meine Idee zum laufen zu bekommen oder ist das Design schon ein Fehler in sich?</p>
<p>Danke für eure Ideen!<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238881/vererbungsproblem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 17:35:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238881.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Apr 2009 22:23:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbungsproblem on Thu, 16 Apr 2009 22:23:53 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein etwas verzwicktes problem! Ich nutze eine Bibliothek welche mir verschiedene nette Klassen vorgibt welche voneinander abgeleitet sind. Jetzt möchte ich eigene Klassen davon ableiten, allerdings sollen diese ein gemeinsammes, von mir definirtes &quot;Interface&quot; haben, also gleiche Functionen teilen. Meine Idee sieht ungefähr so aus:</p>
<p>Eigene Klasse ← Bibliotheksklasse 2 oder 3 oder ... ← Bibliotheksklasse 1<br />
↑<br />
Interfaceklasse</p>
<p>Da die eigene Klasse von vielen verschiedenen Bibliotheksklassen abgeleitet werden kann, kann ich die Interfaceklasse nicht direct &quot;dazwischen&quot; legen sondern muss sie als zusätzliche Basisklasse nutzen.</p>
<p>Die verschiedenen Eigenen Klassen werden nun zur laufzeit erzeugt, allerdings kenne ich die genaue Klasse nicht, die Erzeugung wird durch eine art Factory erledigt.</p>
<p>Nun das Problem: Ich muss einige Funktionen von Bibliotheksklasse 1 verwenden und gleichzeitig auf Funktionen der Interfaceklasse zugreifen!</p>
<p>wenn ich die klasse so erzeuge:</p>
<pre><code>Bibliotheksklasse 1 = new Eigene Klasse()
</code></pre>
<p>ist es mir nicht möglich die Interfacefunktionen zu nutzen, da ein cast unmöglich scheint.</p>
<p>Andersherum</p>
<pre><code>Interfaceklasse = new Eigene Klasse()
</code></pre>
<p>kann ich wieder die Funktionen der Bibliotheksklasse nicht verwenden!</p>
<p>Gibt es eine möglichkeit meine Idee zum laufen zu bekommen oder ist das Design schon ein Fehler in sich?</p>
<p>Danke für eure Ideen!<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696949</guid><dc:creator><![CDATA[Igby]]></dc:creator><pubDate>Thu, 16 Apr 2009 22:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem on Thu, 16 Apr 2009 22:45:04 GMT]]></title><description><![CDATA[<p>Was spricht gegen</p>
<pre><code class="language-cpp">EigeneKlasse* Ptr = new EigeneKlasse();
</code></pre>
<p>Und du kommst doch sicher von Java, oder? Interfaces sind in C++ nicht so üblich wie in Java. Man kann zwar durch Mehrfachvererbung einiges hinkriegen, aber das ist je nach Fall nicht immer der richtige Weg. Braucht denn deine eigene Klasse so ein Interface zwangsläufig? Wäre eventuell das Adapter-Pattern (oder einfach nur freie Funktionen) eine mögliche Alternative?</p>
<p>Und in C++ musst du auch aufpassen, dass du Speicher, den du mit <code>new</code> anforderst, wieder selber mit <code>delete</code> freigibst. Aber ein <code>new</code> ist bei Weitem nicht immer nötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1696959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1696959</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 16 Apr 2009 22:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem on Fri, 17 Apr 2009 06:45:39 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code>EigeneKlasse* Ptr = new EigeneKlasse();
</code></pre>
<p>ist deswegen nicht möglich weil ich zum Zeitpunkt der Erstellung nicht weis welche eigene klasse es ist, es könnten mehrere verschiedene sein! Das ist auch der Grund warum ich das &quot;Interface&quot; benötige, um mit den verschiedenen Eigenen klassen auf standartisierte weise umgehen zu können.</p>
<p>Ich komme nicht von Java, kenne dort nur die Grundzüge, der Bgriff Interface ist eher rein zufällig gewählt weil er mir passend schien <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>Danke<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697022</guid><dc:creator><![CDATA[Igby]]></dc:creator><pubDate>Fri, 17 Apr 2009 06:45:39 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem on Fri, 17 Apr 2009 07:23:05 GMT]]></title><description><![CDATA[<p>Ich habe eine Lösung gefunden! Mittels c++ RTTI ist ein cast möglich (dynamiv_cast)</p>
<p>Jetzt kann ich wie folgt vorgehen:</p>
<pre><code>Bibliotheksklasse1 *bib = new Eigene Klasse;

InterfaceKlasse *inter = dynamic_cast&lt;Interfaceklasse*&gt;bib;
</code></pre>
<p>auf diese weise ist es mir möglich alle nötigen functionen zu nutzen!</p>
<p>Danke für eure Hilfe!<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697033</guid><dc:creator><![CDATA[Igby]]></dc:creator><pubDate>Fri, 17 Apr 2009 07:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem on Fri, 17 Apr 2009 07:25:53 GMT]]></title><description><![CDATA[<blockquote>
<p>Interfaces sind in C++ nicht so üblich wie in Java. Man kann zwar durch Mehrfachvererbung einiges hinkriegen, aber das ist je nach Fall nicht immer der richtige Weg.</p>
</blockquote>
<p>Da bin ich anderer Meinung. In C++ gibt es nur kein eigenes Keyword für eine Schnittstelle, dennoch ist das Konzept (sehr oft) verwendet und sehr sinnvoll.</p>
<p>Ich würde generell die Unterscheidung machen, und die kann auch in C++ gemacht werden, zwischen Implementationsvererbung und Interface Implementierung.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697037</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 17 Apr 2009 07:25:53 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem on Fri, 17 Apr 2009 07:28:22 GMT]]></title><description><![CDATA[<p>Igby schrieb:</p>
<blockquote>
<p>Ich habe eine Lösung gefunden! Mittels c++ RTTI ist ein cast möglich (dynamiv_cast)</p>
<p>Jetzt kann ich wie folgt vorgehen:</p>
<pre><code>Bibliotheksklasse1 *bib = new Eigene Klasse;

InterfaceKlasse *inter = dynamic_cast&lt;Interfaceklasse*&gt;bib;
</code></pre>
<p>auf diese weise ist es mir möglich alle nötigen functionen zu nutzen!</p>
<p>Danke für eure Hilfe!<br />
Stefan</p>
</blockquote>
<p>Das wäre irgendwie entgegen des Substitutionsprinzips.<br />
Dann mach doch verschiedene Interfaces und verschieden Factories.<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697041</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 17 Apr 2009 07:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbungsproblem on Fri, 17 Apr 2009 08:05:20 GMT]]></title><description><![CDATA[<p>Da hast du recht, schön ist es nicht, allerdings müsste ich ungefähr 10-15 Factories/Interfaces schreiben, das ist mir zu aufwenidg!</p>
<p>Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1697063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1697063</guid><dc:creator><![CDATA[Igby]]></dc:creator><pubDate>Fri, 17 Apr 2009 08:05:20 GMT</pubDate></item></channel></rss>