<?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[Abstrakte Klasse]]></title><description><![CDATA[<p>Hallo, ich bin irgendwie damit überfordert eine abstrakte Basisklasse zu schaffen, die keinerlei Funktionalität hat.</p>
<p>Im Grunde will ich so etwas wie<br />
&quot;Komponente&quot;<br />
haben. Eine Komponente muss nichts können, sondern einfach nur den Typ haben, nur wie schaffe ich es, dass keine leeren Komponenten erzeugt werden?<br />
Der Weg, den ich kenne, ist es irgendeine Methode wie foo()=0; einzubauen. Aber meine Komponente hat keine Methoden.</p>
<p>Zum zweiten:<br />
Eine Klasse soll aus solchen Komponenten bestehen, ich möchte aber, dass bestimmte Typen von Komponenten (sozusagen die Grundkomponenten) auf jeden Fall vorkommen, wie macht man das halbwegs elegant?</p>
<p>Und nochwas:<br />
Jeder Komponententyp darf nur einmal vorkommen, um Probleme zu vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288404/abstrakte-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 22:51:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288404.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jun 2011 08:00:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 08:00:47 GMT]]></title><description><![CDATA[<p>Hallo, ich bin irgendwie damit überfordert eine abstrakte Basisklasse zu schaffen, die keinerlei Funktionalität hat.</p>
<p>Im Grunde will ich so etwas wie<br />
&quot;Komponente&quot;<br />
haben. Eine Komponente muss nichts können, sondern einfach nur den Typ haben, nur wie schaffe ich es, dass keine leeren Komponenten erzeugt werden?<br />
Der Weg, den ich kenne, ist es irgendeine Methode wie foo()=0; einzubauen. Aber meine Komponente hat keine Methoden.</p>
<p>Zum zweiten:<br />
Eine Klasse soll aus solchen Komponenten bestehen, ich möchte aber, dass bestimmte Typen von Komponenten (sozusagen die Grundkomponenten) auf jeden Fall vorkommen, wie macht man das halbwegs elegant?</p>
<p>Und nochwas:<br />
Jeder Komponententyp darf nur einmal vorkommen, um Probleme zu vermeiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078897</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 16 Jun 2011 08:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 08:04:37 GMT]]></title><description><![CDATA[<p>Sorry für Doppelpost, aber einwas wäre da noch:<br />
Gibt es eine Standard C++ Lösung um eine Klasse nicht erbbar zu machen?<br />
Also es soll keine Klasse geschrieben werden können, die von dieser einen abgeleitet ist, ich glaube boost hatte so etwas, aber gibts etwas ohne boost?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078904</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 16 Jun 2011 08:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 08:05:39 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber meine Komponente hat keine Methoden.</p>
</blockquote>
<p>Und wie, was und wann tut denn eine solche Komponente irgendwas?</p>
<p>Falls es Dir nur darum geht, eine abstrakte Klasse ohne Methoden zu machen:<br />
Mach einfach den Destruktor rein virtuell und implementiere ihn trotzdem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078905</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 16 Jun 2011 08:05:39 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 08:05:54 GMT]]></title><description><![CDATA[<p>Einfach den Destruktor pure virtual machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078906</guid><dc:creator><![CDATA[PVDestr]]></dc:creator><pubDate>Thu, 16 Jun 2011 08:05:54 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 08:28:08 GMT]]></title><description><![CDATA[<p>shisha schrieb:</p>
<blockquote>
<p>Eine Komponente muss nichts können, sondern einfach nur den Typ haben</p>
</blockquote>
<p>Design-Kritik: Es klingt so, als wolltest Du eine dynamic_cast-Orgie starten. Igitt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078925</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 16 Jun 2011 08:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 09:11:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@Krümelkacker</a>:<br />
welche Alternativen habe ich denn zur dynamic_cast-Orgie?</p>
<p>Also was ich haben möchte ist so etwas wie</p>
<pre><code>Toolkit
{
 Grundkomponente A
 Grundkomponente B
 Grundkomponente C
 Andere Komponenten
}
</code></pre>
<p>Wobei es bei andere Komponenten jede Menge Möglichkeiten geben kann. Und nur weil ich eine Komponente mehr haben möcht, will ich nicht vom Toolkit erben müssen inder Art:</p>
<pre><code>erweitertes Toolkit: Toolkit
{
 Zusätzliche Komponente D
}
</code></pre>
<p>Gibts da irgendwas eleganteres?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2078956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2078956</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 16 Jun 2011 09:11:35 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 10:28:01 GMT]]></title><description><![CDATA[<p>Ich versteh nicht, wofür brauchst du Komponenten wenn die Komponenten dann nichts können, das klingt irgendwie sinnlos <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2079010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079010</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 16 Jun 2011 10:28:01 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 11:27:23 GMT]]></title><description><![CDATA[<p>Komponente soll der Oberbegriff sein, die einzelnen Implementierungen können dann natürlich etwas.</p>
<pre><code>Toolkit
{
Komponenten
}

Komponente
{
//einfach damit das Toolkit sie annehmen kann
}

KomponentenTypA
{
  tuWas()  -&gt; müssen alle von Typ A haben
}

KomponentenTypAImplementierung
{
//zusätzlich
  meine Variablen
  tuWasAnderes()
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2079053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079053</guid><dc:creator><![CDATA[shisha]]></dc:creator><pubDate>Thu, 16 Jun 2011 11:27:23 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 11:41:52 GMT]]></title><description><![CDATA[<pre><code>erweitertes Toolkit: Toolkit
{
 Zusätzliche Komponente D
}
</code></pre>
<p>Das riecht sowieso schon nach Design-Fehler <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>Vererbung niemals, um sich TippArbeit zu sparen.<br />
&quot;Ist implementiert mit&quot; ist eine Composition, kein Inheritance !</p>
<pre><code class="language-cpp">class erweitertes_Toolkit
{
    Zusätzliche_Komponente D;
    Toolkit                Base;
};
</code></pre>
<p>Ist eh sauberer im Design ...</p>
<p>Es sei denn, Toolkit und erweitertes_Toolkit sollen gleichbehandelt werden, also Codeanteile machen keinen unterschied zwischen den Beiden.<br />
Dann ist vererbung natuerlich angebracht und auch notwendig!<br />
Dann haben wir aber auch eine &quot;Ist ein&quot; Beziehung !</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2079061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079061</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Thu, 16 Jun 2011 11:41:52 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 11:44:22 GMT]]></title><description><![CDATA[<p>Wie wärs mit:</p>
<pre><code class="language-cpp">class ComponentA;
class ComponentB;
...

class Toolkit
{
public:
  virtual ComponentA* GetComponentA() = 0;
  virtual ComponentB* GetComponentB() = 0;
  ...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2079064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079064</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 16 Jun 2011 11:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 11:55:32 GMT]]></title><description><![CDATA[<p>Bei uns im Java-Projekt gibt es auch solche leeren Interfaces. Dann wird einfach abgefragt, ob das Objekt eine Instanz vom Interface-Typ ist, und es wird dann darauf entsprechend reagiert. Ziemlich Un-OO. <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>Ich denke mal, in C++ wird so was eher über <a href="http://accu.org/index.php/journals/442" rel="nofollow">Type Traits</a> gelöst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2079073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079073</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Thu, 16 Jun 2011 11:55:32 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 15:18:08 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Bei uns im Java-Projekt gibt es auch solche leeren Interfaces. Dann wird einfach abgefragt, ob das Objekt eine Instanz vom Interface-Typ ist, und es wird dann darauf entsprechend reagiert. Ziemlich Un-OO. <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>Ich denke mal, in C++ wird so was eher über <a href="http://accu.org/index.php/journals/442" rel="nofollow">Type Traits</a> gelöst?</p>
</blockquote>
<p>Wenn der dynamische Typ zur Compile-Zeit nicht bekannt ist, helfen Type Traits nicht weiter. Type Traits sind auch eher dazu da, <em>Eigenschaften</em> von <em>bereits bekannten</em> Typen zu erfragen.</p>
<pre><code class="language-java">Thingy t = ....;
if (t instanceof SuchAndSuch) {
  SuchAndSuch s = (SuchAndSuch) t;
  s.transmogrify();
  ....
}
</code></pre>
<p>--&gt;</p>
<pre><code class="language-cpp">Thingy* t = ....; // Thingy is a polymorphic class type
if (auto s = dynamic_cast&lt;SuchAndSuch*&gt;(t)) {
  s-&gt;transmogrify();
}
</code></pre>
<p>K*cke sieht das aber in <em>beiden</em> Fällen aus, ob Java, ob C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2079258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079258</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 16 Jun 2011 15:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klasse on Thu, 16 Jun 2011 18:29:31 GMT]]></title><description><![CDATA[<p>Warum eigentlich auto und nicht auto* schreiben? Für mich wirkt die Zeile mit auto* viel logischer <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/2079383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2079383</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 16 Jun 2011 18:29:31 GMT</pubDate></item></channel></rss>