<?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[Problem mit dynamischen Klassen und Vererbung...]]></title><description><![CDATA[<p>Hallo,<br />
ich hab ein großes Problem, was Vererbung angeht.<br />
Ich habe ene Klasse, die von einer anderen Klasse abgeleitet wird und<br />
eine Funktion, die als rückgabewert den zeiger auf ein objekt einer<br />
basisklasse hat.<br />
also so:</p>
<pre><code class="language-cpp">class Class1
{
   [...]
};

class Class2
   : public Class1
{
   [...]
};

Class1* FuncGetClassObject();
</code></pre>
<p>Weiß jemand vielleicht, ob ich ein Objekt von Class2 erstellen kann<br />
und damit der Basisklasse automatisch das Ergebnis meiner Funktion<br />
zuweisen kann? Sodass Class2 mit ausgefüllter Basisklasse erstellt wird?<br />
Hoffe ich habs nicht zu umständlich beschrieben.</p>
<p>Danke schonmal,<br />
Norman</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194908/problem-mit-dynamischen-klassen-und-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 16:48:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194908.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Oct 2007 21:46:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit dynamischen Klassen und Vererbung... on Thu, 11 Oct 2007 21:46:46 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich hab ein großes Problem, was Vererbung angeht.<br />
Ich habe ene Klasse, die von einer anderen Klasse abgeleitet wird und<br />
eine Funktion, die als rückgabewert den zeiger auf ein objekt einer<br />
basisklasse hat.<br />
also so:</p>
<pre><code class="language-cpp">class Class1
{
   [...]
};

class Class2
   : public Class1
{
   [...]
};

Class1* FuncGetClassObject();
</code></pre>
<p>Weiß jemand vielleicht, ob ich ein Objekt von Class2 erstellen kann<br />
und damit der Basisklasse automatisch das Ergebnis meiner Funktion<br />
zuweisen kann? Sodass Class2 mit ausgefüllter Basisklasse erstellt wird?<br />
Hoffe ich habs nicht zu umständlich beschrieben.</p>
<p>Danke schonmal,<br />
Norman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383267</guid><dc:creator><![CDATA[Norman0406]]></dc:creator><pubDate>Thu, 11 Oct 2007 21:46:46 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit dynamischen Klassen und Vererbung... on Thu, 11 Oct 2007 21:59:00 GMT]]></title><description><![CDATA[<p>Norman0406 schrieb:</p>
<blockquote>
<p>Hoffe ich habs nicht zu umständlich beschrieben.</p>
</blockquote>
<p>Ich fürchte genau das ist der Fall. (Außer du meinst <code>Class1* foo = new Class2</code> (probier's einfach aus, funktioniert.))</p>
<p>Wie wär's mit einer Pseudocode-Implemantation von FuncGetClassObject?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383269</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Thu, 11 Oct 2007 21:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit dynamischen Klassen und Vererbung... on Fri, 12 Oct 2007 01:14:02 GMT]]></title><description><![CDATA[<p>also prinzipiell sieht meine funktion so aus:</p>
<pre><code class="language-cpp">Class1* FuncGetClassObject()
{
   Class1* newObject = new Class1;
   [...] // Hier wird das Objekt dann initialisiert und in eine vector-liste geschrieben

   return newObject;
}
</code></pre>
<p>Das return am Ende mache ich nur, falls ich doch noch irgendwas mit dem<br />
Objekt machen möchte und keine Lust hab, nochmal die Liste danach zu<br />
durchsuchen.<br />
Aber ich wollte gerne das erstelle Objekt (newObject) als Basisobjekt für<br />
meine Class2 haben, also irgendetwas in der Richtung:</p>
<pre><code class="language-cpp">Class2* pClass2 = new Class2;
pClass2::Class1 = FuncGetClassObject();
</code></pre>
<p>Ich weiß, das ist schrecklich falsch, vor allem weil ich den mit 'new' für das<br />
Basisobjekt reservierten Speicher verloren hätte und nicht mehr löschen könnte,<br />
aber es wär halt toll <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>Das mit</p>
<pre><code class="language-cpp">Class1* foo = new Class2;
</code></pre>
<p>klappt bei mir nicht, er sagt immer, ich könne Class2 nicht in Class1 casten.</p>
<p>Ich habs jetzt einfach mal so gelöst, dass ich auf Vererbung verzichte und<br />
jetzt sieht meine Class2 so aus:</p>
<pre><code class="language-cpp">class Class2
{
   [...]
   Class1* m_pClass1;
   void SetClass(Class1* pClass) { m_pClass1 = pClass; };
};
</code></pre>
<p>Ist vielleicht nicht so elegant wie Vererbung, aber jetzt klappts.<br />
Aber danke nochmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383316</guid><dc:creator><![CDATA[Norman0406]]></dc:creator><pubDate>Fri, 12 Oct 2007 01:14:02 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit dynamischen Klassen und Vererbung... on Fri, 12 Oct 2007 08:52:25 GMT]]></title><description><![CDATA[<p>Also wenn</p>
<pre><code class="language-cpp">Class1* foo = new Class2;
</code></pre>
<p>bei dir nicht klappt, dann hast du etwas mit der Vererbung falsch gemacht.<br />
Verwende in der Basisklasse aber auf jeden Fall einen virtuellen Destruktor:</p>
<pre><code class="language-cpp">class Class1
{
public:
  virtual ~Class1() {};
};
</code></pre>
<p>Die zweite Variante ist auf jeden Fall nicht so toll, da du dann den Zeiger ja irgendwo wieder freigeben müßtest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383493</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 12 Oct 2007 08:52:25 GMT</pubDate></item></channel></rss>