<?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[Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen...]]></title><description><![CDATA[<p>Hi,<br />
mir stellt sich gerade folgendes Programmierproblem:<br />
ich besitze zwei Klassen, die dieselben Methoden enthalten(dieselben Methodennamen,...), aber in den Methoden unterschiedliche Implementierungen besitzen.</p>
<p>Nun würde ich gerne zur Laufzeit meines Programmes ein Objekt aus einer dieser Klassen dynamisch erzeugen und dann ganz normal damit arbeiten. Aus welcher Klasse dieses Objekt erzeugt werden soll, ergibt sich allerdings erst zur Laufzeit.</p>
<p>Mein Lösungsansatz war dementsprechend:</p>
<pre><code>cKlasse1* cObj;

if(irgendwas){
    cObj = new cKlasse1();
}else{
    cObj = new cKlasse2();
}

cObj-&gt;TuWas();
</code></pre>
<p>Ich dachte, da es sich (nach aussen) um dieselben Klassen handelt, könnte ich mit nur einem (globalen) Pointer beide Fälle abdecken.</p>
<p>Leider klappt dieser Ansatz nicht, fällt euch evtl. eine anderer Lösungsweg ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/110647/objekt-dynamisch-erzeugen-aber-klasse-erst-zur-laufzeit-aussuchen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 18:03:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/110647.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 May 2005 10:25:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:25:25 GMT]]></title><description><![CDATA[<p>Hi,<br />
mir stellt sich gerade folgendes Programmierproblem:<br />
ich besitze zwei Klassen, die dieselben Methoden enthalten(dieselben Methodennamen,...), aber in den Methoden unterschiedliche Implementierungen besitzen.</p>
<p>Nun würde ich gerne zur Laufzeit meines Programmes ein Objekt aus einer dieser Klassen dynamisch erzeugen und dann ganz normal damit arbeiten. Aus welcher Klasse dieses Objekt erzeugt werden soll, ergibt sich allerdings erst zur Laufzeit.</p>
<p>Mein Lösungsansatz war dementsprechend:</p>
<pre><code>cKlasse1* cObj;

if(irgendwas){
    cObj = new cKlasse1();
}else{
    cObj = new cKlasse2();
}

cObj-&gt;TuWas();
</code></pre>
<p>Ich dachte, da es sich (nach aussen) um dieselben Klassen handelt, könnte ich mit nur einem (globalen) Pointer beide Fälle abdecken.</p>
<p>Leider klappt dieser Ansatz nicht, fällt euch evtl. eine anderer Lösungsweg ein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794038</guid><dc:creator><![CDATA[SilentSurfer]]></dc:creator><pubDate>Mon, 23 May 2005 10:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:34:43 GMT]]></title><description><![CDATA[<p>Erzeuge eine abstrakte Basisklasse und leite beide Klassen davon ab, die benötigten Methoden machst du dann virtual.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794045</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 23 May 2005 10:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:37:47 GMT]]></title><description><![CDATA[<p>[Edit] Vergesst es...[/Edit]</p>
<p>Könntest das doch auch per <em>union</em> machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794046</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Mon, 23 May 2005 10:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:37:00 GMT]]></title><description><![CDATA[<p>mach doch nur eine klasse</p>
<pre><code class="language-cpp">class Klasse
{
   Klasse:Klasse(int iTyp)
   { 
      switch(iTyp)
      {
         case 1:
            //Klasse typ 1 initialisieren
         break;
         case 2:
            //Klasse typ 2 initialisieren
         break;

      }
   };
};

Klasse Obj;
if (irgendwas)
{
   Obj = new Klasse(1);
}
else
{
   Obj = new Klasse(2);
}

Obj-&gt;TuWas();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/794048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794048</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Mon, 23 May 2005 10:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:42:12 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ein polymorphe Basisklasse ist das beste für diese Situation. Und unions sollte man ausschließlich für Basistypen (POD) einsetzen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794053</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 23 May 2005 10:42:12 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:42:55 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9348">@TH</a><br />
Klingt gut, der Pointer, um auf eine der Abgeleiteten Klassen zuzugreifen, ist dann vom Typ der Basisklasse?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7573">@BigNeal</a>:<br />
Wäre eine möglichkeit, die beiden Klassen sind allerdings recht umfangreich.<br />
Und beide existieren schon, der Aufwand, beide Klassen zu einer zusammenzuführen, ist recht heftig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794055</guid><dc:creator><![CDATA[SilentSurfer]]></dc:creator><pubDate>Mon, 23 May 2005 10:42:55 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 10:48:44 GMT]]></title><description><![CDATA[<p>Hallo SilentSurfer,</p>
<p>genau der Pointer ist dann vom Typ der Basisklasse, also</p>
<pre><code class="language-cpp">cBasisKlasse* cObj; 

if(irgendwas){ 
    cObj = new cKlasse1(); 
}else{ 
    cObj = new cKlasse2(); 
} 

cObj-&gt;TuWas();
</code></pre>
<p>Wenn du dann doch spezielle Methoden einer Klasse aufrufen willst, kannst du dann entsprechend casten, z.B.</p>
<pre><code class="language-cpp">if(irgendwas)
  static_cast&lt;cKlasse1*&gt;(cObj)-&gt;TuWasSpeziellesNurFuerKlasse1();
</code></pre>
<p>Dies sollte aber nicht zu häufig vorkommen sein, ansonsten auch diese Methode virtual machen, und in der Basisklasse mit {} definieren. Dann brauchst du sie in der anderen Klasse nicht zu definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794060</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 23 May 2005 10:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 11:53:22 GMT]]></title><description><![CDATA[<p>SilentSurfer schrieb:</p>
<blockquote>
<pre><code>cKlasse1* cObj;

if(irgendwas){
    cObj = new cKlasse1();
}else{
    cObj = new cKlasse2();
}

cObj-&gt;TuWas();
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>öhm... sollte bei</p>
<pre><code class="language-cpp">cObj = new cKlasse2();
</code></pre>
<p>nicht n Compilerfehler kommen weil<br />
der Pointer *cObj vom Typ cKlasse1 ist?</p>
<p>also ich würd ja auch ne abstrakte basisklasse machen, von der ableiten und<br />
dann den pointer von der basisklasse erstellen und diesen mittels new<br />
operator dann ein Objekt anheften, welches den abgeleitetn klassen entspricht.<br />
wenn de dann die methode in den abgeleiteten klassen implementierst dann<br />
nimmt der automatisch die richtige... also in der basisklasse ne virtuelle<br />
und in der abgeleiteten dann die definition der methode</p>
<p>mfg</p>
<p>mightymop</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794101</guid><dc:creator><![CDATA[mightymop]]></dc:creator><pubDate>Mon, 23 May 2005 11:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 11:59:52 GMT]]></title><description><![CDATA[<p>SilentSurfer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7573">@BigNeal</a>:<br />
Wäre eine möglichkeit, die beiden Klassen sind allerdings recht umfangreich.<br />
Und beide existieren schon, der Aufwand, beide Klassen zu einer zusammenzuführen, ist recht heftig.</p>
</blockquote>
<p>in diesem fall, wie schon oft erwähnt eine Basisklasse und davon ableiten.. <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/794108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794108</guid><dc:creator><![CDATA[BigNeal]]></dc:creator><pubDate>Mon, 23 May 2005 11:59:52 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 12:01:46 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>Wenn du dann doch spezielle Methoden einer Klasse aufrufen willst, kannst du dann entsprechend casten, z.B.</p>
<pre><code class="language-cpp">if(irgendwas)
  static_cast&lt;cKlasse1*&gt;(cObj)-&gt;TuWasSpeziellesNurFuerKlasse1();
</code></pre>
</blockquote>
<p>Statt des static_casts solltest du besser dynamic_cast nehmen, schließlich ist er speziell für Down-Casts gedacht. <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/794110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794110</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Mon, 23 May 2005 12:01:46 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt dynamisch erzeugen, aber Klasse erst zur Laufzeit aussuchen... on Mon, 23 May 2005 14:05:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Statt des static_casts solltest du besser dynamic_cast nehmen, schließlich ist er speziell für Down-Casts gedacht.</p>
</blockquote>
<p>Aber nur, wenn er bei seinem Compiler auch RTTI eingeschaltet hat...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/794249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/794249</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 23 May 2005 14:05:43 GMT</pubDate></item></channel></rss>