<?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[Standard Makro das Klassennamen zurückgibt]]></title><description><![CDATA[<p>Hallo,</p>
<p>und mal wieder weiß ich nicht weiter:</p>
<p>Ich weiß das es ein standard Makro gibt, das den aktuellen Klassennamen zurückgibt. Leider finde ich per google gerade nichts. Jetzt wollte ich hier mal fragen ob jemand den Namen des Makros kennt.</p>
<p>Kleines Beispiel:</p>
<pre><code class="language-cpp">class myClass
{
public:
   void print()
   {
      std::cout &lt;&lt; MAKRO_NAME &lt;&lt; std::endl;
   }  // hier sollte dann &quot;myClass&quot; ausgegeben werden
};
</code></pre>
<p>Wäre super wenn mir jemand weiterhelfen könnte!</p>
<p>EDIT:</p>
<p>Das einzige was ich gefunden habe war &quot;__FILE__&quot;, welches den Filenamen zurückgibt. Habe ich mich getäuscht und es exisitiert keines für Klassennamen, sondern nur dieses?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198508/standard-makro-das-klassennamen-zurückgibt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 05:57:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198508.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Nov 2007 10:07:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 10:18:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>und mal wieder weiß ich nicht weiter:</p>
<p>Ich weiß das es ein standard Makro gibt, das den aktuellen Klassennamen zurückgibt. Leider finde ich per google gerade nichts. Jetzt wollte ich hier mal fragen ob jemand den Namen des Makros kennt.</p>
<p>Kleines Beispiel:</p>
<pre><code class="language-cpp">class myClass
{
public:
   void print()
   {
      std::cout &lt;&lt; MAKRO_NAME &lt;&lt; std::endl;
   }  // hier sollte dann &quot;myClass&quot; ausgegeben werden
};
</code></pre>
<p>Wäre super wenn mir jemand weiterhelfen könnte!</p>
<p>EDIT:</p>
<p>Das einzige was ich gefunden habe war &quot;__FILE__&quot;, welches den Filenamen zurückgibt. Habe ich mich getäuscht und es exisitiert keines für Klassennamen, sondern nur dieses?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407987</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 10:21:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
using namespace std;

#define ClassName(X) #X

class foo
{
public:
foo()
{
   cout &lt;&lt; ClassName(foo);
}
};

int main()
{
    foo bar;
    return 0;
}
</code></pre>
<p>Büdde <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="🙂"
    /><br />
rya</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408007</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:21:44 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 10:25:13 GMT]]></title><description><![CDATA[<p>Ein Makro ist mir nicht bekannt, aber es geht mit Hilfe von RTTI:</p>
<pre><code class="language-cpp">typeid(*this).name();
</code></pre>
<p>Vordefinierte Präprozessorvariablen findest du hier:<br />
<a href="http://www.cppreference.com/preprocessor/preprocessor_vars.html" rel="nofollow">http://www.cppreference.com/preprocessor/preprocessor_vars.html</a></p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408008</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 10:45:32 GMT]]></title><description><![CDATA[<p>Ok, dann hab ich mich wohl getäuscht. Werde wohl mit __FILE__ arbeiten (geht um einen Logger). RTTI möchte ich nicht extra für den Logger mitkompilieren müssen.</p>
<p>Danke...</p>
<p>PS @ Scorcher: das würde ich auch gerade noch schaffen <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/1408028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408028</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 10:58:22 GMT]]></title><description><![CDATA[<p>Einige Compiler unterstützen auch das Makro &quot;__FUNC__&quot;, das dann auch bei Klassenmembern (bzw. Konstruktor/Destruktor) funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408041</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Thu, 22 Nov 2007 10:58:22 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 11:47:34 GMT]]></title><description><![CDATA[<p>Ich arbeite hier mit gcc-Version 3.4.6 und der kennt das Makro __FUNC__ leider nicht. Wäre auch zu schön gewesen <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="🙂"
    /><br />
Trotzdem danke, werde das mal daheim mit dem msvc Compiler probieren ob der das kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408070</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 22 Nov 2007 11:47:34 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 11:51:46 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Ich arbeite hier mit gcc-Version 3.4.6 und der kennt das Makro __FUNC__ leider nicht. Wäre auch zu schön gewesen <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="🙂"
    /><br />
Trotzdem danke, werde das mal daheim mit dem msvc Compiler probieren ob der das kann...</p>
</blockquote>
<p>verwend halt __FUNCTION__ bzw __PRETTY_FUNCTION__ was dir fürs logging sicher besesr gefällt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408075</guid><dc:creator><![CDATA[daHa]]></dc:creator><pubDate>Thu, 22 Nov 2007 11:51:46 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 12:18:54 GMT]]></title><description><![CDATA[<p>Blöde Frage: Was is an der Lösung von mir auszusetzen? Sie tut genau das was du möchtest..<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408089</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 12:28:43 GMT]]></title><description><![CDATA[<p>Warum statt</p>
<pre><code class="language-cpp">cout &lt;&lt; ClassName(foo)
</code></pre>
<p>nicht gleich</p>
<pre><code class="language-cpp">cout &lt;&lt; &quot;foo&quot;
</code></pre>
<p><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="🙂"
    /><br />
Dann brauchst du gar keine Makros.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408098</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:28:43 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 12:31:43 GMT]]></title><description><![CDATA[<p>Naja, dein define macht ja nix anderes als ein Namen der übergeben wird per cout auszugeben. Aber ich schreibe einen richtigen logger, der einmal eingebunden wird und mit einem Makroaufruf (z.B. LOG_ERROR &lt;&lt; &quot;hallo&quot; &lt;&lt; LOG_ENDL;) so eine Ausgabe erzeugen soll:</p>
<p>ERROR (2007-05-21 09:11:13, myClass on Line 311): hallo</p>
<p>Im Quelltext soll so wenig Schreibaufwand wie möglich sein. Deswegen will ich den Klassennamen rausfinden und nicht wie in deinem Fall ihn übergeben. Aus diesem Grund werde ich wohl mit __FILE__ arbeiten (auch wenn mir __PRETTY_FUNCTION__ sehr gut gefällt), da myClass.cpp den Klassennamen beinhaltet.</p>
<p>Edit:<br />
Tja, zu langsam...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408101</guid><dc:creator><![CDATA[Tobias W]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:31:43 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 12:35:03 GMT]]></title><description><![CDATA[<p>Man muss den Klassennamen explizit eintragen?</p>
<p>MfG Kimmi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408106</guid><dc:creator><![CDATA[kimmi]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:35:03 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 12:39:27 GMT]]></title><description><![CDATA[<p>Tobias W schrieb:</p>
<blockquote>
<p>Naja, dein define macht ja nix anderes als ein Namen der übergeben wird per cout auszugeben. Aber ich schreibe einen richtigen logger, der einmal eingebunden wird und mit einem Makroaufruf (z.B. LOG_ERROR &lt;&lt; &quot;hallo&quot; &lt;&lt; LOG_ENDL;) so eine Ausgabe erzeugen soll:</p>
<p>ERROR (2007-05-21 09:11:13, myClass on Line 311): hallo</p>
<p>Im Quelltext soll so wenig Schreibaufwand wie möglich sein. Deswegen will ich den Klassennamen rausfinden und nicht wie in deinem Fall ihn übergeben. Aus diesem Grund werde ich wohl mit __FILE__ arbeiten (auch wenn mir __PRETTY_FUNCTION__ sehr gut gefällt), da myClass.cpp den Klassennamen beinhaltet.</p>
<p>Edit:<br />
Tja, zu langsam...</p>
</blockquote>
<p>Ok, ist nachvollziehbar <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="🙂"
    /> War leider aus deiner Frage nicht ersichtlich, dass du dieses &quot;#&quot; schon kennst.^^<br />
rya.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408108</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:39:27 GMT</pubDate></item><item><title><![CDATA[Reply to Standard Makro das Klassennamen zurückgibt on Thu, 22 Nov 2007 12:40:27 GMT]]></title><description><![CDATA[<p>Das __FUNCTION__ Makro gibt es eigentlich auf fast jedem Compiler. Es heißt nur manchmal anders (__FUNC__ bei Borland). Im kommenden Standard soll es dann wohl als __func__ drin sein.<br />
Ich denke schon das man das so verwenden kann. Bei Bedarf kann man es ja mit diversen #ifdefs umdefinieren.<br />
<a href="http://lists.ibiblio.org/pipermail/freetds/2003q4/014164.html" rel="nofollow">http://lists.ibiblio.org/pipermail/freetds/2003q4/014164.html</a><br />
<a href="http://www.informit.com/guides/content.aspx?g=cplusplus&amp;seqNum=338&amp;rl=1" rel="nofollow">http://www.informit.com/guides/content.aspx?g=cplusplus&amp;seqNum=338&amp;rl=1</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408109</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 22 Nov 2007 12:40:27 GMT</pubDate></item></channel></rss>