<?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[Den Klassennamen innerhalb einer Methode ermitteln]]></title><description><![CDATA[<p>Hi,</p>
<p>wie der Titel schon sagt würde ich gerne den Klassenname(und wenn möglich den Methodennamen) innerhalb meiner Eigenen Klasse ermitteln.</p>
<p>Ich Stelle mir das in etwa so vor:</p>
<pre><code class="language-cpp">void MyClass::MyFunktion(…)
{
	char buffer[256];
	buffer=GetKlassenname(…);
}
</code></pre>
<p>Ist so etwas möglich und wenn ja wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/236905/den-klassennamen-innerhalb-einer-methode-ermitteln</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 15:35:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/236905.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Mar 2009 16:50:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 16:51:35 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wie der Titel schon sagt würde ich gerne den Klassenname(und wenn möglich den Methodennamen) innerhalb meiner Eigenen Klasse ermitteln.</p>
<p>Ich Stelle mir das in etwa so vor:</p>
<pre><code class="language-cpp">void MyClass::MyFunktion(…)
{
	char buffer[256];
	buffer=GetKlassenname(…);
}
</code></pre>
<p>Ist so etwas möglich und wenn ja wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683886</guid><dc:creator><![CDATA[Cyphron]]></dc:creator><pubDate>Sat, 21 Mar 2009 16:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 17:09:12 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Solche Funktionen bietet Standard-C++ soweit ich weiss nicht...<br />
Wie wäre es, wenn du uns verrätst, was du vorhast? (:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683901</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 21 Mar 2009 17:09:12 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 17:26:14 GMT]]></title><description><![CDATA[<p>Ich schreibe derzeit ein größeres Programm und will Fehler die auftreten in eine Logdatei schreiben.<br />
Um schneller die Ursache zu ermitteln möchte ich daher den Ursprung ermitteln.</p>
<p>Soweit ich weiß gibt es in Java solch eine Funktion und habe gehofft so etwas in C++ zu finden.</p>
<p>Quasi(Log.txt):<br />
(Datum)(Zeit): Fehlerbeschreibung(z.B. Access Violation) in: Klassenname/Methodenname</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683910</guid><dc:creator><![CDATA[Cyphron]]></dc:creator><pubDate>Sat, 21 Mar 2009 17:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 17:36:20 GMT]]></title><description><![CDATA[<p>Je nach Kompiler sind z.B. __LINE__ und __FILE__ Makros definiert, die die Zeilennummer und das zugehörige Source File angeben.</p>
<p>Gänginge ASSERT Funktionen benutzte diese.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683917</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 21 Mar 2009 17:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 17:36:26 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Achso, verstehe. Nein, soetwas bietet C++ nicht. Würde auch garkeinen Sinn machen, da die Klassen zur Laufzeit des Programmes eh nicht mehr existieren.</p>
<p>Aber ich frage mich, warum du nicht eben selber den Namen da reintippst, immerhin sind es ja dir bekannte Klassen, also sollte das doch kein Problem darstellen...</p>
<p>Ansonsten informier dich hier weiter, da findest du einen Lösungsansatz, wie die Klassen nach dem kompilieren aussehen:<br />
<a href="http://www.openrce.org/articles/full_view/21" rel="nofollow">http://www.openrce.org/articles/full_view/21</a></p>
<p>Mfg.<br />
way</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683918</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sat, 21 Mar 2009 17:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 18:18:36 GMT]]></title><description><![CDATA[<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19131">@theta</a>:</strong></p>
<p>Danke funktioniert super.</p>
<p><strong>@way:</strong></p>
<p>Bisher hatte ich das auch immer so gemacht aber ich habe nach einer generischen Lösung gesucht. Daran das die Klassen sich „Auflösen“ hatte ich gar nicht mehr gedacht. Danke für den Hinweis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
---<br />
Der Thread kann geschlossen werden(kann man das hier selbst?).</p>
<p>mfg Cyphron</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683939</guid><dc:creator><![CDATA[Cyphron]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:18:36 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 18:23:13 GMT]]></title><description><![CDATA[<p>Unter Microsoft Visual C++ kannst du das Makro <code>__FUNCTION__</code> einsetzen, um an den Funktionsnamen zu gelangen. Allerdings ist das nicht sehr portabel, spezifischere Debug-Ausgaben wären wohl besser geeignet. Zum Beispiel hast du so immer noch Probleme bei Überladung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683942</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 21 Mar 2009 18:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 20:20:13 GMT]]></title><description><![CDATA[<p>Eine weitere Möglichkeit gäbe es noch, allerdings ist nicht garanatiert, was genau dabei rauskommt. Es soll laut Standard ein lesbarer Name sein, was das aber genau bedeutet ist eben nicht definiert <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>
<pre><code class="language-cpp">// Allgemeine Version für this-Zeiger
template&lt;typename T&gt;
std::string get_class_name(T*)
{
	return typeid(T).name();
}

class Foo
{
public:
	std::string get_class_name() const
	{
		return ::get_class_name(this);
	}
};

int main()
{
	// Einfach die type_info holen von der Klasse.
	// Wäre aber eigentlich ein &quot;Foo&quot; genausogut.
	std::cout &lt;&lt; typeid(Foo).name() &lt;&lt; std::endl;

	std::cout &lt;&lt; Foo().get_class_name() &lt;&lt; std::endl;

	std::cin.get();

	return 0;
}
</code></pre>
<p>Mit der ersten Version, also über this, kann man dann natürlich ein Makro machen:</p>
<pre><code class="language-cpp">#define CLASS_NAME (::get_class_name(this))

class Bar
{
public:
  void do_something()
  {
    std::cout &lt;&lt; CLASS_NAME &lt;&lt; std::endl;
  }
};
</code></pre>
<p>Viel mehr kann man in C++ halt nicht machen, da es keine Reflections gibt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1683988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1683988</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 21 Mar 2009 20:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Den Klassennamen innerhalb einer Methode ermitteln on Sat, 21 Mar 2009 21:03:52 GMT]]></title><description><![CDATA[<p>Diese Lösung gefällt mir auch sehr gut. danke <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>
<p>Aber ich denke ich werde mit __FILE__ und __LINE__ arbeiten. So kann ich noch<br />
herrausfinden wo der Fehler aufgetreten ist.</p>
<p>Funktionniert übrigens auch mit dem g++ Kompiler unter Windows.<br />
Der Unterschied besteht nur darin das unter VC der gesamte Pfad+Datei und unter g++ nur die Datei angegben wird:</p>
<p>VC: \...\...\datei.cpp<br />
g++: datei.cpp</p>
<p>Ich werde es die Tage auch noch unter Linux und Mac OS testen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1684003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1684003</guid><dc:creator><![CDATA[Cyphron]]></dc:creator><pubDate>Sat, 21 Mar 2009 21:03:52 GMT</pubDate></item></channel></rss>