<?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[Klassen: Who is your dady?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem: Um Klassen eindeutig identifizieren zu können, benutze ich deren Klassenname.</p>
<p>Dafür benutz ich ne ganz popelige Funktion:</p>
<pre><code class="language-cpp">class Z : public Y //  class Y : public X
{
public:
    // ...
    string getName ()
    {
        static string name = typeid(*this).name();
        return (name);
    }
    // ...
};
</code></pre>
<p>Problem hierbei ist jedoch, das der Parent nicht berücksichtigt wird - welchen ich jedoch auch wissen muss!</p>
<p>Was ich mir wünschen würde wäre z. B. wenn ich getName von Z aufrufe folgenden String zu bekommen:<br />
&quot;Z:Y:X&quot;</p>
<p>oder wenn ich von X aufrufe:<br />
&quot;X&quot;</p>
<p>bzw. bei Y:<br />
&quot;Y:X&quot;</p>
<p>Leider gibt es nicht wie in C#, Java oder PHP die möglichkeit &quot;parent&quot;, dank der eigentlich nützlichen Mehrfachvererbungsunterstützung.</p>
<p>Weiß jemand wie ich das Problem lösen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190801/klassen-who-is-your-dady</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 18:30:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190801.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Aug 2007 09:18:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:18:36 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes Problem: Um Klassen eindeutig identifizieren zu können, benutze ich deren Klassenname.</p>
<p>Dafür benutz ich ne ganz popelige Funktion:</p>
<pre><code class="language-cpp">class Z : public Y //  class Y : public X
{
public:
    // ...
    string getName ()
    {
        static string name = typeid(*this).name();
        return (name);
    }
    // ...
};
</code></pre>
<p>Problem hierbei ist jedoch, das der Parent nicht berücksichtigt wird - welchen ich jedoch auch wissen muss!</p>
<p>Was ich mir wünschen würde wäre z. B. wenn ich getName von Z aufrufe folgenden String zu bekommen:<br />
&quot;Z:Y:X&quot;</p>
<p>oder wenn ich von X aufrufe:<br />
&quot;X&quot;</p>
<p>bzw. bei Y:<br />
&quot;Y:X&quot;</p>
<p>Leider gibt es nicht wie in C#, Java oder PHP die möglichkeit &quot;parent&quot;, dank der eigentlich nützlichen Mehrfachvererbungsunterstützung.</p>
<p>Weiß jemand wie ich das Problem lösen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352787</guid><dc:creator><![CDATA[C++&#x27;ler]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:18:36 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:32:52 GMT]]></title><description><![CDATA[<p>C++'ler schrieb:</p>
<blockquote>
<p>Weiß jemand wie ich das Problem lösen kann?</p>
</blockquote>
<p>Verwende ein Design, bei dem du solche Informationen nicht benötigst. Wenn das nicht geht, verwende nicht C++.</p>
<p>In C++ geht das nicht wirklich, darum schreibt man Programme üblicherweise so, dass sie ohne solche Informationen auskommen. Das Verwenden von zur Laufzeit ermittelten Typinformationen wird IMHO verbreitet als Indiz für schlechtes Design angesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352797</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:33:02 GMT]]></title><description><![CDATA[<p>die sinnvollste lösung für das problem hängt jetzt stark davon ab, was genau du eigentlich machen willst oder anders: wofür brauchst du die genau identifikation deiner klasse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352799</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:33:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:34:07 GMT]]></title><description><![CDATA[<p>Beim Entwickeln der Klassen weißt du doch, wie sie miteinander verwandt sind - und dann kannst du auch genau das als Typ angeben, was du benötigst:</p>
<pre><code class="language-cpp">class Z : public Y
{
  string GetName()
  {
    static string name = string(typeid(*this).name())+&quot;:&quot;+Y::GetName();
    return name;
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1352802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352802</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:37:38 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2803">@MFK</a>:<br />
Falsch, ich benutze es zur Initialisierungszeit, daher static. Außerdem bietet C++ kein Konstante __CLASS__. Also erzähl mir bitte nichts vom schlechten Design - zur Initialisierungszeit ist das Furz wie Deckel.</p>
<p>@ghost:<br />
Ne Art Double Dispatcher, soll das werden, der alle Interaktionen verwaltet. Wenn jedoch keine Interaktion zu einer Klasse existiert, soll die Interaktion der darüberliegenden (also der Vater-Klasse) genommen werden. Mehrfachvererbung wird nicht benötigt.</p>
<p>Funktionieren tuts das gut wenn ich den Klassennamen per Hand einpflege, jedoch automatisiert ist das alles besser.</p>
<p>Ich dachte auch evtl. daran Integer zu benutzen, jedoch habe ich dort das selbe Problem nur in Grün.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352813</guid><dc:creator><![CDATA[C++&#x27;ler]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:48:08 GMT]]></title><description><![CDATA[<p>Im Magazin gibts einen Artikel zum Double-Dispatchen. Recht schwierig zu verstehen wie ich finde, aber ein Blick wert <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/1352827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352827</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:51:00 GMT]]></title><description><![CDATA[<p>Zum Thema double dispatcher koennte dir vielleicht das Kapitel &quot;Multimethods&quot; aus Alexanderescus &quot;Modern C++&quot; helfen. Da sind verschiedene Ansaetze Beschrieben, wie man so ein problem angehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352830</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:51:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 09:54:45 GMT]]></title><description><![CDATA[<p>Wie ist das eigentlich? Da geht es doch darum, dass aufgrund von zwei (oder mehr) Typeninformationen die entsprechende Funktion aufgerufen wird, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352837</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 27 Aug 2007 09:54:45 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 10:00:06 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Wie ist das eigentlich? Da geht es doch darum, dass aufgrund von zwei (oder mehr) Typeninformationen die entsprechende Funktion aufgerufen wird, oder?</p>
</blockquote>
<p>Jap. Im weitesten Sinne also das, was virtuelle Funktionen in Abhaengigkeit von einer Klasse koennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352841</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 27 Aug 2007 10:00:06 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen: Who is your dady? on Mon, 27 Aug 2007 10:09:17 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Im Magazin gibts einen Artikel zum Double-Dispatchen. Recht schwierig zu verstehen wie ich finde, aber ein Blick wert <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>
</blockquote>
<p>hab mir das angeguckt, aber wenn man mehr als nur einmal ließt: &quot;Das ist trivial&quot;, &quot;wie jedem klar ist geht das nicht&quot; (und keine richtige Lösung kommt) usw. hat man schon die Lust dran verloren und macht es selbst.</p>
<p>Ist zwar schön und gut das es diesen Artikel geht, aber am Ende kommt nichts richtig lauffähiges bei rum und es stehen mehr Fragen im Raum als Antworten.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a><br />
hab leider nicht soviel geld <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1352847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1352847</guid><dc:creator><![CDATA[C++&#x27;ler]]></dc:creator><pubDate>Mon, 27 Aug 2007 10:09:17 GMT</pubDate></item></channel></rss>