<?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[Reflection: ClassOfCaller gesucht]]></title><description><![CDATA[<p>Ich glaube das Problem ist hiermit ausreichend beschrieben. <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>schon mal dank im vor raus - gorgoyle</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173772/reflection-classofcaller-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 12:44:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173772.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Feb 2007 18:43:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Mon, 19 Feb 2007 18:43:46 GMT]]></title><description><![CDATA[<p>Ich glaube das Problem ist hiermit ausreichend beschrieben. <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>schon mal dank im vor raus - gorgoyle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1231446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1231446</guid><dc:creator><![CDATA[gorgoyle]]></dc:creator><pubDate>Mon, 19 Feb 2007 18:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Mon, 19 Feb 2007 18:59:10 GMT]]></title><description><![CDATA[<p>Also... In irgendeinem Java vs. C++ Flame-Thread kam irgendwann mal das Thema Reflection auf und ichwusste nicht was das genau war.</p>
<p>Deshalb habe ich dann gefragt und als Antwort (unter anderem) gekriegt, dass es in C++ (praktisch) kein Reflection (außer RTTI) gibt.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Entweder falsches Forum oder: Es geht nicht :p</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1231460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1231460</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Mon, 19 Feb 2007 18:59:10 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Mon, 19 Feb 2007 19:05:36 GMT]]></title><description><![CDATA[<p>Beschreibe mal, wofür du das brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1231465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1231465</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Mon, 19 Feb 2007 19:05:36 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 15:26:18 GMT]]></title><description><![CDATA[<p>Ich möchte ohne zusätzlichen Parameter in einer Instanz-Methode <strong>M</strong> eine Print-Methode <strong>P</strong> aufrufen. <strong>P</strong> soll erst als &quot;Label&quot; den Namen der Klasse von <strong>M</strong> ausgeben und danach die von <strong>M</strong> erhalte Nachricht.<br />
Wenn <strong>M</strong> zu <strong>P</strong> nicht <em>extra</em> sagt, zu welcher Klasse <strong>M</strong> gehört, muss <strong>P</strong> das irgendwie selbst herauskriegen.</p>
<p>Unter Java nennt sich das reflection. Gibt es sowas nicht auch unter C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232060</guid><dc:creator><![CDATA[gorgoyle]]></dc:creator><pubDate>Tue, 20 Feb 2007 15:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 15:36:56 GMT]]></title><description><![CDATA[<p>Hä? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Ich nichs verstehen, was du wollen.</p>
<p>Also, erstmal, Reflection gibts in C++ nicht. Es gibt zwar RTTI (Runtime Type Informations), aber die sind so mager, das sie gerade mal dazu beitragen, das ein C++-Programm überhaupt läuft. Denn in C++ gilt die Devise: du bezahlst nur für das, was du auch willst. Und Reflections will niemand. <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="😉"
    /> Denn Reflections heißt auch Performance-Verlust. Willst du Reflections in C++ haben, mußt du C++/CLI benutzen (aber das willst du bestimmt auch nicht).</p>
<p>Egal... zurück zu deiner Frage: ich habe mir jetzt mehrmals deine Beschreibung durch gelesen. Mich beschleicht das Gefühl, das es nichts mit Reflections zu tun hat, sondern mit Objektorientierung und somit Polymorphie. Und Polymorphie bekommst du in C++ hin, in dem du das Schlüsselwort <strong>virtual</strong> für deine Methoden benutzt. Das ist Basis-Technik in C++, also keine Trickserei.</p>
<p>Aber wie gesagt, verstanden habe ich dein Problem nicht 100%ig. Ich habe mal bei Google &quot;classofcaller&quot; eingegeben: 1 (EIN!) Ergebnis. Also, irgendwie hast du wohl den falschen Begriff genutzt, um uns dein Problem zu schildern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232070</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 20 Feb 2007 15:36:56 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 15:47:16 GMT]]></title><description><![CDATA[<p>gorgoyle schrieb:</p>
<blockquote>
<p>Ich möchte ohne zusätzlichen Parameter in einer Instanz-Methode <strong>M</strong> eine Print-Methode <strong>P</strong> aufrufen. <strong>P</strong> soll erst als &quot;Label&quot; den Namen der Klasse von <strong>M</strong> ausgeben und danach die von <strong>M</strong> erhalte Nachricht.<br />
Wenn <strong>M</strong> zu <strong>P</strong> nicht <em>extra</em> sagt, zu welcher Klasse <strong>M</strong> gehört, muss <strong>P</strong> das irgendwie selbst herauskriegen....</p>
</blockquote>
<pre><code class="language-cpp">class PrintableClassName {
protected:
    virtual void P() const = 0;
};

class A : public PrintableClassName {
protected:
    virtual void P() const { cout &lt;&lt; &quot;A&quot;; }
};

class DoSomethingWithA {
   A a;
public:
    void M() const { a.P(); }
};

class DoSomethingWithAnyPrintableClassName {
   PrintableClassName* a;
public:
    DoSomethingWithAnyPrintableClassName(PrintableClassName* anyPCN) : a(anyPCN) {}
    void M() const { a-&gt;P(); }
};
</code></pre>
<p>Irgendwie brauche ich da gar keine &quot;Reflections&quot; ... und irgendwie kann ich gar nicht glauben, dass man in Java welche zur Lösung dieser Aufgabe bräuchte.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232074</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 20 Feb 2007 15:47:16 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 15:56:39 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Irgendwie brauche ich da gar keine &quot;Reflections&quot; ...</p>
</blockquote>
<p>Du hast ja auch nicht die Klasse, in der M steht, ausgegeben, sondern die, in der P steht. Um das hinzukriegen, müsste man auf den Aufrufstack gucken und den this-Parameter der obersten Methode nach seinen Typinfos fragen.<br />
Mag in Java gehen, in C++ -- keine Chance.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232085</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 20 Feb 2007 15:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 16:01:45 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Simon2 schrieb:</p>
<blockquote>
<p>Irgendwie brauche ich da gar keine &quot;Reflections&quot; ...</p>
</blockquote>
<p>Du hast ja auch nicht die Klasse, in der M steht, ausgegeben, sondern die, in der P steht. Um das hinzukriegen, müsste man auf den Aufrufstack gucken und den this-Parameter der obersten Methode nach seinen Typinfos fragen.<br />
Mag in Java gehen, in C++ -- keine Chance.</p>
</blockquote>
<p>Ahaaaa ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
<p>D.h. er möchte den Namen einer Klasse ausgeben, die das &quot;von sich aus nicht kann&quot; ?<br />
Naja, &quot;statisch&quot; ginge das noch mit templates, aber &quot;dynamisch&quot; sehe ich da auch keine Lösung. .... allerdings auch kein (echtes) Anwendungsgebiet...(höchstens zu Debuggingzwecken).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232091</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 20 Feb 2007 16:01:45 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 16:11:53 GMT]]></title><description><![CDATA[<p>Also will er, das der Klassenname des Aufrufers einer Methode ausgegeben wird? Welchen Sinn soll das haben? Und wenn man das unbedingt haben will/muß, dann muß man sich halt this übergeben lassen. Ich weiß, muß sich die Schnittstelle ändern/anpassen. Aber das wäre dann ohne Trickserei, sondern sauber. Reflections sind eine tolle Sache, aber kann man meistens durch entsprechendes Design &quot;umgehen&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232100</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 20 Feb 2007 16:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 16:21:52 GMT]]></title><description><![CDATA[<p>Die Antwort, daß es keine Reflection unter C++ gibt, ist erschöpfend aber nicht befriedigend <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="😞"
    /><br />
Zunächst der MethodenName classOfCaller() war griffig und kurz, aber nur erfunden, um die Lösung zu skizzieren.</p>
<p>Für den Interessierten:<br />
Ich wollte auf Kosten der Performance zu gunsten der Quellcode-Größe darauf verzichten jeder betroffenen Klasse beizubringen, wie man den Klassennamen in die auszugebende Nachricht vorsetzt, sondern diese Fähigkeit nur in der Klasse implementieren, die für Ausgaben zuständig ist.</p>
<pre><code>Class A {
  IONode IO;
  void check() {
    IO-&gt;D(&quot;okidoki!&quot;);
  }
};
/** classOfCaller() gibt es leider nicht :( */
Class IONode {
  void D (char*ca) {
    cout &lt;&lt; &quot;Klasse &quot; &lt;&lt; [i]classOfCaller()[/i] &lt;&lt; &quot; meldet: &quot; &lt;&lt; ca &lt;&lt;'\n';
  }
};
</code></pre>
<p>Dies Problem lässt sich zwar noch umschiffen, wenn ich zusätzlich noch eine Methode L(char*ca) (L für Label)schreibe, aber wenn ich die Ausgabe umleiten oder blocken möchte, muß Klasse IONode schon wissen, von wem die Nachricht kommt.</p>
<p>Ich muß da wohl noch etwas basteln..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232106</guid><dc:creator><![CDATA[gorgoyle]]></dc:creator><pubDate>Tue, 20 Feb 2007 16:21:52 GMT</pubDate></item><item><title><![CDATA[Reply to Reflection: ClassOfCaller gesucht on Tue, 20 Feb 2007 16:26:18 GMT]]></title><description><![CDATA[<p>Umleiten oder blocken? Was willst du eigentlich erreichen? Ich wette mit dir, das man dein &quot;Problem&quot; mit normalen C++-Mitteln lösen kann. Wenn du nicht andauernd auf dem Java-Zug hängen würdest, sondern mal aussteigen und uns auf dem Bahnsteig dein allgemeines Problem und Ziel erklärst, ohne Java-Gedanken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1232110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1232110</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 20 Feb 2007 16:26:18 GMT</pubDate></item></channel></rss>