<?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[Klassennamen zur Laufzeit]]></title><description><![CDATA[<p>Hi !</p>
<p>Ich würde gerne zur Laufzeit eine Klasse erstellen die einen beliebigen Namen trägt.<br />
Ich habe zZ etwa folgendes:</p>
<pre><code class="language-cpp">class A
{
 int foo();
 ...
};

class B
{
 private:  
 ClassCount=0;

 public:
 A *C[10];

 addClass()
 {
  C[ClassCount] = new A;
  ClassCount++;
 }

 ...
};
</code></pre>
<p>zugreifen muss ich auf die erstellten instanzen von A dann über</p>
<pre><code class="language-cpp">B-&gt;A[i]-&gt;foo();
</code></pre>
<p>ich hätte aber lieber sowas wie:</p>
<pre><code class="language-cpp">...
addClass(char* name)
 {
  name = new A;
  ClassCount++;
 }
...
</code></pre>
<p>so daß ich dann</p>
<pre><code class="language-cpp">...
addClass(Blah);
B-&gt;Blah-&gt;foo();
...
</code></pre>
<p>machen kann... Geht sowas ? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129600/klassennamen-zur-laufzeit</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 06:58:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129600.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Dec 2005 20:28:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassennamen zur Laufzeit on Wed, 14 Dec 2005 20:28:22 GMT]]></title><description><![CDATA[<p>Hi !</p>
<p>Ich würde gerne zur Laufzeit eine Klasse erstellen die einen beliebigen Namen trägt.<br />
Ich habe zZ etwa folgendes:</p>
<pre><code class="language-cpp">class A
{
 int foo();
 ...
};

class B
{
 private:  
 ClassCount=0;

 public:
 A *C[10];

 addClass()
 {
  C[ClassCount] = new A;
  ClassCount++;
 }

 ...
};
</code></pre>
<p>zugreifen muss ich auf die erstellten instanzen von A dann über</p>
<pre><code class="language-cpp">B-&gt;A[i]-&gt;foo();
</code></pre>
<p>ich hätte aber lieber sowas wie:</p>
<pre><code class="language-cpp">...
addClass(char* name)
 {
  name = new A;
  ClassCount++;
 }
...
</code></pre>
<p>so daß ich dann</p>
<pre><code class="language-cpp">...
addClass(Blah);
B-&gt;Blah-&gt;foo();
...
</code></pre>
<p>machen kann... Geht sowas ? Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/942340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/942340</guid><dc:creator><![CDATA[Kalk]]></dc:creator><pubDate>Wed, 14 Dec 2005 20:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to Klassennamen zur Laufzeit on Wed, 14 Dec 2005 20:54:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich glaube du suchst sowas wie <a href="http://www.cppreference.com/cppmap/" rel="nofollow">std::map</a> :).</p>
<p>Damit lässt sich z.B. folgendes machen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;map&gt;
using namespace std;

class A
{
 public:
 void foo() { cout &lt;&lt; &quot;\n A::foo()\n&quot;; }
};

class B
{
 private:

 public:
 map&lt;string, A*&gt; C; // Dieses Konstrukt ist doch deutlich schöner

 void addClass(const string&amp; rhs)
 {
  if(!C.count(rhs))
     C[rhs] = new A; // Für den Key rhs wird (sofern dieser noch nicht existiert)...
                     // ein Objekt vom Typ A auf dem Heap konstruiert.
                    // Das Objekt, kannst du jetzt über den Key ansprechen...
 }

   // edit: Wichtig: Den Speicher musst du auch wieder freigeben (Spätestens im Dtor von B
};

int main()
{
    B* obj = new B;
    obj-&gt;addClass(&quot;test&quot;);
    obj-&gt;addClass(&quot;test2&quot;);

    cout &lt;&lt; &quot;obj-&gt;C[\&quot;test\&quot;] = &quot; &lt;&lt; obj-&gt;C[&quot;test&quot;] &lt;&lt; endl; 
    cout &lt;&lt; &quot;obj-&gt;C[\&quot;test2\&quot;] = &quot; &lt;&lt; obj-&gt;C[&quot;test2&quot;] &lt;&lt; endl;

    obj-&gt;C[&quot;test&quot;]-&gt;foo(); // Aufruf von foo für das Objekt mit dem Key &quot;test&quot;.
    obj-&gt;C[&quot;test2&quot;]-&gt;foo();

    delete obj;

}
</code></pre>
<p>Ist zwar nicht genau das was du wolltest, aber da ich dein Problem nicht näher kenne, ist das der erste Vorschlag :).</p>
<p>Gruß Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/942361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/942361</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Wed, 14 Dec 2005 20:54:08 GMT</pubDate></item></channel></rss>