<?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[Vererbung: Zu welcher Unterklasse gehört die Instanz nun?]]></title><description><![CDATA[<p>Guten abend</p>
<p>man stelle sich folgenden einfachen aufbau vor:</p>
<pre><code>class Base {
...
};

class Sub1 : public Base {
...
};

class  Sub2 : public Base {
...
}

int main() {
 Base *instane;

 instance[0] = Sub1(..);
 instance[1] = Sub2(..);
 instance[3] = Sub2(..);
 instance[4] = Sub1(..);
 instance[5] = Base(...);
 usw..

}
</code></pre>
<p>an einer anderen Stelle im code muss ich dann wissen von welchem typ instance[i] ist. Was wäre die beste lösung für dieses problem?</p>
<p>Ich könnte eigentlich eine virtuelle methode implementieren anhand deren rückgabewert man den typ identifizieren könnte, das scheint mir aber nicht sehr elegant.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287785/vererbung-zu-welcher-unterklasse-gehört-die-instanz-nun</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 07:46:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287785.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Jun 2011 23:47:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Fri, 03 Jun 2011 23:47:47 GMT]]></title><description><![CDATA[<p>Guten abend</p>
<p>man stelle sich folgenden einfachen aufbau vor:</p>
<pre><code>class Base {
...
};

class Sub1 : public Base {
...
};

class  Sub2 : public Base {
...
}

int main() {
 Base *instane;

 instance[0] = Sub1(..);
 instance[1] = Sub2(..);
 instance[3] = Sub2(..);
 instance[4] = Sub1(..);
 instance[5] = Base(...);
 usw..

}
</code></pre>
<p>an einer anderen Stelle im code muss ich dann wissen von welchem typ instance[i] ist. Was wäre die beste lösung für dieses problem?</p>
<p>Ich könnte eigentlich eine virtuelle methode implementieren anhand deren rückgabewert man den typ identifizieren könnte, das scheint mir aber nicht sehr elegant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073093</guid><dc:creator><![CDATA[bctac]]></dc:creator><pubDate>Fri, 03 Jun 2011 23:47:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Fri, 03 Jun 2011 23:50:47 GMT]]></title><description><![CDATA[<p>So, wie du das im Moment machst, sind alle Instanzen vom Typ &quot;Base&quot; - das nennt sich Slicing <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>Ansonsten: Wenn du dein Programm so umstellst, daß es mit Zeigern arbeitet, dann kannst du mit RTTI oder dynamic_cast&lt;&gt; arbeiten. Aber normalerweise zeugt schon die Frage von schlechtem Design.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073094</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Jun 2011 23:50:47 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 00:38:23 GMT]]></title><description><![CDATA[<p>@bctac:<br />
Guck dir mal das Visitor Pattern an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073104</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 04 Jun 2011 00:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 09:11:36 GMT]]></title><description><![CDATA[<p>Da die Unterklassen meistens größer sind als die Basisklasse, können sie nicht einfach so direkt in dein Array (das du übrigens noch allozieren musst) kopiert werden. Daher benutzt man da eigentlich Pointer drauf (also Base **instance oder std::vector&lt;Base *&gt; oder std::vector&lt;std::auto_ptr&lt;Base&gt; &gt;). Demnach werden sie hier automatisch zu Base konvertiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073143</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 04 Jun 2011 09:11:36 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 09:17:00 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>std::vector&lt;std::auto_ptr&lt;Base&gt; &gt;</p>
</blockquote>
<p>Afaik wird das sich nicht compilieren lassen, weil die Kopieroperationen von auto_ptr nicht kompatibel zu den Anforderungen des Containers sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073145</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Jun 2011 09:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 09:18:18 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>std::vector&lt;std::auto_ptr&lt;Base&gt; &gt;</p>
</blockquote>
<p>Afaik wird das sich nicht compilieren lassen, weil die Kopieroperationen von auto_ptr nicht kompatibel zu den Anforderungen des Containers sind.</p>
</blockquote>
<p>Och schade. Und ich dachte schon, da würde sogar etwas mit dem aktuellen Standard gehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073146</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Sat, 04 Jun 2011 09:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 09:31:58 GMT]]></title><description><![CDATA[<p>Nein, im aktuellen Standard gab's das noch nicht, die Lücke füllen eventuell std::vector<a href="boost::shared%5C_ptr" rel="nofollow">boost::shared\_ptr</a> oder boost::ptr_vector&lt;&gt; (oder Äquivalente aus std::tr1). Es wird schon einen Grund haben, warum auto_ptr&lt;&gt; in C++0x als <a href="http://www.cppreference.com/wiki/memory/start" rel="nofollow">deprecated</a> eingestuft wurde <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/2073149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073149</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 04 Jun 2011 09:31:58 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 09:44:44 GMT]]></title><description><![CDATA[<p>Man kann ja einfach einen <code>std::vector&lt;Base*&gt;</code> machen und dann die Speicherverwaltung mit einem selbstgeschriebenen Allokator machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073155</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sat, 04 Jun 2011 09:44:44 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 10:07:14 GMT]]></title><description><![CDATA[<p>wxSkip schrieb:</p>
<blockquote>
<p>Och schade. Und ich dachte schon, da würde sogar etwas mit dem aktuellen Standard gehen...</p>
</blockquote>
<p><code>std::unique_ptr</code> , allerdings hat man dann nur Move-Semantik.</p>
<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Man kann ja einfach einen <code>std::vector&lt;Base*&gt;</code> machen und dann die Speicherverwaltung mit einem selbstgeschriebenen Allokator machen.</p>
</blockquote>
<p>Allokator selbst schreiben halte ich für Overkill. Zudem muss man die besitzenden Zeiger immer noch manuell freigeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2073165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073165</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 04 Jun 2011 10:07:14 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 10:38:10 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>wxSkip schrieb:</p>
<blockquote>
<p>Och schade. Und ich dachte schon, da würde sogar etwas mit dem aktuellen Standard gehen...</p>
</blockquote>
<p><code>std::unique_ptr</code> , allerdings hat man dann nur Move-Semantik.</p>
</blockquote>
<p>Ist (nocht) nicht der aktuelle Standard. Es sei denn ich hab ein Jahr verpennt <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/2073182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073182</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 04 Jun 2011 10:38:10 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung: Zu welcher Unterklasse gehört die Instanz nun? on Sat, 04 Jun 2011 10:54:14 GMT]]></title><description><![CDATA[<p>Stimmt, hab irgendwie falsch gelesen <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/2073191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2073191</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 04 Jun 2011 10:54:14 GMT</pubDate></item></channel></rss>