<?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[Array vom Typ einer Abstrakten Basisklasse?]]></title><description><![CDATA[<p>Ich hatte vor einer Weile mal ein Array eines bestimmten Typs deklariert, dass dann mit Objekten der abgeleiteten Klassen dieses Typs gefüllt wurde. Dazu war aber natürlich erstmal eine Zeile wie &quot;Basisklasse *array = new Basisklasse[laenge]&quot; nötig, bevor ich Sachen wie &quot;array[pos] = new Subklasse()&quot; machen konnte.</p>
<p>Jetzt versuche ich ähnliches gerade mit einer Abstrakten Basisklasse (also mit pure virtual functions) zu machen, aber wie zu erwarten war, geht das natürlich nicht so ohne weiteres, weil man ABCs nicht instanzieren kann.</p>
<p>Die Frage also: Kann ich auch mit einer solchen abstrakten Klasse als Basisklasse irgendwie ein Array aufmachen, dass ich dann mit nicht-abstrakten abgeleiteten Klassen füllen kann? Das will ich nämlich im Endeffekt tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194382/array-vom-typ-einer-abstrakten-basisklasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 10:24:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194382.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Oct 2007 22:54:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array vom Typ einer Abstrakten Basisklasse? on Fri, 05 Oct 2007 22:54:23 GMT]]></title><description><![CDATA[<p>Ich hatte vor einer Weile mal ein Array eines bestimmten Typs deklariert, dass dann mit Objekten der abgeleiteten Klassen dieses Typs gefüllt wurde. Dazu war aber natürlich erstmal eine Zeile wie &quot;Basisklasse *array = new Basisklasse[laenge]&quot; nötig, bevor ich Sachen wie &quot;array[pos] = new Subklasse()&quot; machen konnte.</p>
<p>Jetzt versuche ich ähnliches gerade mit einer Abstrakten Basisklasse (also mit pure virtual functions) zu machen, aber wie zu erwarten war, geht das natürlich nicht so ohne weiteres, weil man ABCs nicht instanzieren kann.</p>
<p>Die Frage also: Kann ich auch mit einer solchen abstrakten Klasse als Basisklasse irgendwie ein Array aufmachen, dass ich dann mit nicht-abstrakten abgeleiteten Klassen füllen kann? Das will ich nämlich im Endeffekt tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378941</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Fri, 05 Oct 2007 22:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ einer Abstrakten Basisklasse? on Fri, 05 Oct 2007 23:49:53 GMT]]></title><description><![CDATA[<p>Nabend/Nacht,</p>
<p>Du musst dafür ein Array von Zeigern auf die abstrakte Basisklasse erstellen:</p>
<pre><code class="language-cpp">AbstrakteKlasse **array = new AbstrakteKlasse[num];
array[0] = new AbgeleiteteKlasse();
//Alternativ mit std::vector
std::vector&lt;AbstrakteKlasse *&gt; array;
array.push_back(new AbgeleiteteKlasse());
</code></pre>
<p>Ungetestet, hoffe das stimmt so.</p>
<p>KaPtainCugel</p>
<p>EDIT: underscore bei push_back vergessen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378954</guid><dc:creator><![CDATA[KPC]]></dc:creator><pubDate>Fri, 05 Oct 2007 23:49:53 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ einer Abstrakten Basisklasse? on Fri, 05 Oct 2007 23:58:42 GMT]]></title><description><![CDATA[<p>Ein <a href="http://www.boost.org/libs/ptr_container/doc/ptr_container.html" rel="nofollow">Pointer-Container</a> ist für gewöhnlich die beste Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378955</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 05 Oct 2007 23:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ einer Abstrakten Basisklasse? on Sat, 06 Oct 2007 00:39:45 GMT]]></title><description><![CDATA[<p>KPC schrieb:</p>
<blockquote>
<p>Nabend/Nacht,</p>
<p>Du musst dafür ein Array von Zeigern auf die abstrakte Basisklasse erstellen:</p>
<pre><code class="language-cpp">AbstrakteKlasse **array = new AbstrakteKlasse[num];
array[0] = new AbgeleiteteKlasse();
//Alternativ mit std::vector
std::vector&lt;AbstrakteKlasse *&gt; array;
array.push_back(new AbgeleiteteKlasse());
</code></pre>
<p>Ungetestet, hoffe das stimmt so.</p>
<p>KaPtainCugel</p>
<p>EDIT: underscore bei push_back vergessen</p>
</blockquote>
<p>Du hast beim 1. new ein Sternchen vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378963</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Sat, 06 Oct 2007 00:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ einer Abstrakten Basisklasse? on Sat, 06 Oct 2007 09:00:22 GMT]]></title><description><![CDATA[<p>son gemüse ist die ausnahme, für die ich folgende konstrukte mag:</p>
<pre><code class="language-cpp">typedef AbstrakteKlasse* AbstrakteKlassePtr;
// ...
AbstrakteKlassePtr* pp = new AbstrakteKlassePtr[50];
pp[0] = new KonkreteKlasse;
</code></pre>
<p>kann gefährlich sein, wenn man mit solchen typedefs arbeitet (da ist schnell mal ein delete vergessen), aber wenn man mit pointern auf pointer arbeitet erhöht sowas häufig die lesbarkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379010</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 06 Oct 2007 09:00:22 GMT</pubDate></item><item><title><![CDATA[Reply to Array vom Typ einer Abstrakten Basisklasse? on Sat, 06 Oct 2007 10:01:00 GMT]]></title><description><![CDATA[<p>Ich hab jetzt sowas in der folgenden Form benutzt:</p>
<pre><code class="language-cpp">class Klasse
{
public:
  AbstrakteKlasse **array:

  void eineMethode() {
    array = *new AbstrakteKlasse[1];
    array[0] = new AbgeleiteteKlasse(); 
  }
};
</code></pre>
<p>Das müsste also den Vorschlägen entsprechen. Trotzdem bekomme ich nach wie vor</p>
<pre><code>error C2259: 'AbstrakteKlasse' : cannot instantiate abstract class
</code></pre>
<p>Liegt der Fehler woanders, oder hab ich hier eine Kleinigkeit übersehen?</p>
<p>EDIT: Stimmt, hab eine Kleinigkeit übersehen. Das * war natürlich völlig falsch gesetzt. Es muss ja schließlich &quot;array = new AbstrakteKlasse*[1];&quot; heißen. Da hab ich wohl zu lange mit dem zeigerlosen Java programmiert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379025</guid><dc:creator><![CDATA[David Schneider]]></dc:creator><pubDate>Sat, 06 Oct 2007 10:01:00 GMT</pubDate></item></channel></rss>