<?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[Gibt es in C++ eine Referenz auf die jeweilige Klasse?]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte gerne etwas der folgenden Art realisieren:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Papa
{
public:
        virtual void name() = 0;
        static Papa * create()
        {
                return new self();
        }
};

class Sohn : Papa
{
public:
        void name()
        {
                cout &lt;&lt; &quot;Sohn&quot; &lt;&lt; endl;
        }
};

class Tochter : Papa
{
public:
        void name()
        {
                cout &lt;&lt; &quot;Tochter&quot; &lt;&lt; endl;
        }
};

int main(int argc, char ** argv)
{
        Papa * ref;
        ref = Sohn::create();
        ref-&gt;name();
        ref = Tochter::create();
        ref-&gt;name();

        /* Output:
         * Sohn
         * Tochter
         */
        return 0;
}
</code></pre>
<p>Gibt es eine Möglichkeit, etwas derartiges zu basteln?<br />
Ich möchte es eigentlich in einem Singleton nutzen ohne in den Kindklassen die create-Funktion jedesmal schreiben zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267190/gibt-es-in-c-eine-referenz-auf-die-jeweilige-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 15:12:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267190.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 May 2010 11:08:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gibt es in C++ eine Referenz auf die jeweilige Klasse? on Thu, 20 May 2010 11:08:23 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte gerne etwas der folgenden Art realisieren:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Papa
{
public:
        virtual void name() = 0;
        static Papa * create()
        {
                return new self();
        }
};

class Sohn : Papa
{
public:
        void name()
        {
                cout &lt;&lt; &quot;Sohn&quot; &lt;&lt; endl;
        }
};

class Tochter : Papa
{
public:
        void name()
        {
                cout &lt;&lt; &quot;Tochter&quot; &lt;&lt; endl;
        }
};

int main(int argc, char ** argv)
{
        Papa * ref;
        ref = Sohn::create();
        ref-&gt;name();
        ref = Tochter::create();
        ref-&gt;name();

        /* Output:
         * Sohn
         * Tochter
         */
        return 0;
}
</code></pre>
<p>Gibt es eine Möglichkeit, etwas derartiges zu basteln?<br />
Ich möchte es eigentlich in einem Singleton nutzen ohne in den Kindklassen die create-Funktion jedesmal schreiben zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900083</guid><dc:creator><![CDATA[HeLLo]]></dc:creator><pubDate>Thu, 20 May 2010 11:08:23 GMT</pubDate></item><item><title><![CDATA[Reply to Gibt es in C++ eine Referenz auf die jeweilige Klasse? on Thu, 20 May 2010 11:36:38 GMT]]></title><description><![CDATA[<p>Mal von den Speicherlecks in deinen Beispiel abgesehen (und noch ein paar anderen kleineren Problemen, die ich mit getrennten Speichermanagement habe):</p>
<pre><code class="language-cpp">// [Ungetestet]
class IBase
{
  public:
    virtual void name() = 0;
};

template&lt;typename T&gt;
class TBase : public IBase
{
  public:
    static T * create()
    {
      return new T();
    }
};

class A : public TBase&lt;A&gt;
{
};

class B : public TBase&lt;B&gt;
{
};

int main()
{
  IBase * ref = A::create();
  ref-&gt;name();
  delete ref;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1900098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900098</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 20 May 2010 11:36:38 GMT</pubDate></item></channel></rss>