<?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[Adressen von virtuellen und überladenen Funktion erhalten]]></title><description><![CDATA[<pre><code class="language-cpp">class CTest
{
public:

   CTest();
  ~CTest();

  static  void FunktionA ();
          void FunktionB ();
  virtual void FunktionC ();
          void FunktionD ();
          void FunktionD (int);
}
</code></pre>
<p>Bisher kann ich ohne Probleme die Adressen der folgenden Adressen auslesen:</p>
<ul>
<li>CTest::FunktionA</li>
<li>CTest::FunktionB</li>
<li>CTest::FunktionC (nur MSVC++)</li>
</ul>
<p>Gibt es einen Weg, die Adressen von folgenden Funktionen zu erhalten?:</p>
<ul>
<li>CTest::CTest</li>
<li>CTest::~CTest</li>
<li>CTest::FunktionC</li>
<li>CTest::FunktionD ()</li>
<li>CTest::FunktionD (int)</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/topic/139120/adressen-von-virtuellen-und-überladenen-funktion-erhalten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 12:25:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139120.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Mar 2006 17:32:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 17:32:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class CTest
{
public:

   CTest();
  ~CTest();

  static  void FunktionA ();
          void FunktionB ();
  virtual void FunktionC ();
          void FunktionD ();
          void FunktionD (int);
}
</code></pre>
<p>Bisher kann ich ohne Probleme die Adressen der folgenden Adressen auslesen:</p>
<ul>
<li>CTest::FunktionA</li>
<li>CTest::FunktionB</li>
<li>CTest::FunktionC (nur MSVC++)</li>
</ul>
<p>Gibt es einen Weg, die Adressen von folgenden Funktionen zu erhalten?:</p>
<ul>
<li>CTest::CTest</li>
<li>CTest::~CTest</li>
<li>CTest::FunktionC</li>
<li>CTest::FunktionD ()</li>
<li>CTest::FunktionD (int)</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1007887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007887</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Fri, 03 Mar 2006 17:32:03 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 17:43:35 GMT]]></title><description><![CDATA[<p>Destruktor und Konstruktor geht nicht (gibt auch keinen Sinn). Alle anderen einfach mit dem Addressoperator &amp;.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007892</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007892</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Fri, 03 Mar 2006 17:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 21:59:30 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>Destruktor und Konstruktor geht nicht (gibt auch keinen Sinn). Alle anderen einfach mit dem Addressoperator &amp;.</p>
<p>Gruß</p>
</blockquote>
<p>Konstruktor und Destruktor hätte ich aber gerne, sind auch nur Funktionen <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 />
Und es ist keineswegs möglich die Adresse der Funktionen &quot;FunktionC&quot; und &quot;FunktionD&quot; mit dem Adressoperator zu erhalten.</p>
<p>z.B.</p>
<pre><code class="language-cpp">&amp;CTest::FunktionD
</code></pre>
<p>Hier weiß der Compiler nicht, welche Überladung von &quot;FunktionD&quot; gemeint ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008100</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Fri, 03 Mar 2006 21:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 22:37:53 GMT]]></title><description><![CDATA[<p>Schau dir mal das hier (aus dem Standard) an:</p>
<blockquote>
<p>A use of an overloaded function name without arguments is resolved in certain contexts to a function, a<br />
pointer to function or a pointer to member function for a specific function from the overload set. A function<br />
template name is considered to name a set of overloaded functions in such contexts. The function<br />
selected is the one whose type matches the target type required in the context. The target can be<br />
— an object or reference being initialized (8.5, 8.5.3),<br />
— the left side of an assignment (5.17),<br />
— a parameter of a function (5.2.2),<br />
— a parameter of a user-defined operator (13.5),<br />
— the return value of a function, operator function, or conversion (6.6.3),<br />
— an explicit type conversion (5.2.3, 5.2.9, 5.4), or<br />
— a non-type template-parameter (14.3.2).<br />
The overloaded function name can be preceded by the &amp; operator. An overloaded function name shall not<br />
be used without arguments in contexts other than those listed. [Note: any redundant set of parentheses surrounding<br />
the overloaded function name is ignored (5.1). ]</p>
</blockquote>
<p>Beispiel (ist bei Methoden das selbe):</p>
<pre><code class="language-cpp">void foo() { cout &lt;&lt; &quot;foo()&quot;; }          // #1
void foo(int) { cout &lt;&lt; &quot;foo(int)&quot;; } ;  // #2

typedef void (*funcptr1)();    // Typ eines Pointer auf #1
typedef void (*funcptr2)(int); // Typ eines Pointer auf #2

// no. 1
funcptr1 a = &amp;foo; // ok!

// no. 2
void iNeedTypeOne(funcptr1 ptr);
iNeedTypeOne(&amp;foo); // ok, selbes mit konstruktoren, operatoren!

// no. 3
static_cast&lt;funcptr1&gt;(&amp;foo); // ok!

// no. 4
funcptr1 iReturnTypeOne() {
    return &amp;foo; // ok!
}
</code></pre>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008132</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Fri, 03 Mar 2006 22:37:53 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 23:04:42 GMT]]></title><description><![CDATA[<p>ok, danke - ich bin jetzt etwas weiter ^^</p>
<p>Folgende Probleme bleiben:</p>
<ul>
<li>Adressen von Konstruktor und Destruktor</li>
</ul>
<pre><code>error C2277: 'CTest::{ctor}' : cannot take address of this member function
error C2277: 'CTest::~CTest' : cannot take address of this member function
</code></pre>
<ul>
<li>Adressen von virtuellen Funktionen</li>
<li>Eine Funktion, Makro, Inline-Assembler (MSVC++), mit der man jede Funktionsadresse in z.B. void* speichern kann (z.B. GetAddress (Beliebige::Funktion))</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1008146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008146</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Fri, 03 Mar 2006 23:04:42 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 23:19:05 GMT]]></title><description><![CDATA[<p>- Konstruktor / Dekonstruktor:</p>
<p>Standard 12.1.12 schrieb:</p>
<blockquote>
<p>The address of a constructor shall not be taken.</p>
</blockquote>
<p>Standard 12.4.2 schrieb:</p>
<blockquote>
<p>The address of a destructor shall not be taken.</p>
</blockquote>
<p>- Virtuelle Methoden: Wo ist das Problem?</p>
<pre><code class="language-cpp">struct Base // base class
{
    virtual void func() { cout &lt;&lt; &quot;Base::func() \n&quot;; }
};

struct Derived : public Base // derived class
{
    void func() { cout &lt;&lt; &quot;Derived::func() \n&quot;; }
};

typedef void (Base::*memptr)();
memptr ptr = &amp;Base::func;

Base* obj = new Derived;
(obj-&gt;*ptr)();
delete obj;
</code></pre>
<p>- Zu dem &quot;Zabermakro&quot;: Im Grunde operator &amp;, die Beschränkung bei überladenen Funktion kannst du nicht umgehen, der Compiler muss ja irgendwie wissen welche Funktion du meinst</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008151</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Fri, 03 Mar 2006 23:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 23:29:36 GMT]]></title><description><![CDATA[<p>Das mit den virtuellen Methoden geht nicht so leicht, denn der Adressoperator gibt den Index des Methodenpointers im vtable zurück (g++) und arbeitet nur bei MSVC++ so wie ich ihn gerne hätte (er gibt die absolute Adresse zurück).</p>
<p>Mit GetAddress meine ich folgendes:</p>
<pre><code class="language-cpp">GetAddress (&amp;CTest::CTest);
GetAddress (&amp;CTest::~CTest);
GetAddress (&amp;CTest::FunktionA);
GetAddress (&amp;CTest::FunktionB);
GetAddress (&amp;CTest::FunktionC);
GetAddress ((void (CTest::*)())&amp;CTest::FunktionD);
GetAddress ((void (CTest::*)(int))&amp;CTest::FunktionD);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1008153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008153</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Fri, 03 Mar 2006 23:29:36 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 23:49:41 GMT]]></title><description><![CDATA[<p>Du bist auf einer ganz falschen Spur. Erklär mal was du damit anfangen willst.</p>
<p>Die tatsächliche Adresse der virtuellen Methode zu bekommen macht doch gar keinen Sinn, dann kannst du gleich das virtual weg lassen.</p>
<p>Konstruktor- und Destruktoradresse bekommst du nicht. Das geht nicht. Auf jeden Fall nicht laut dem C++-Standard, da kannst du machen was du willst. Das gibt auch gar keinen Sinn zu was brauchst du die?</p>
<p>Hier hast du deine Zauberfunktion: <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">template&lt;typename T&gt;T getAddress(T t) { return t; } //scnr
</code></pre>
<p>PS: Bin nun im Bett und das Forum ist mal wieder langsamer als der Doppelklick meiner Mutter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008159</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Fri, 03 Mar 2006 23:49:41 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Fri, 03 Mar 2006 23:57:25 GMT]]></title><description><![CDATA[<p>Wozu willst du überhaupt die Adresse vom Konstruktor? Man erzeugt nie ein Objekt von dem man den Typ nicht kennt und wenn man den Typ kennt, kann man ja auch direkt den Konstruktor aufrufen.</p>
<p>Ich glaube du versucht gerade die Sprache zu vergewaltigen um deine Designfehler auszubügeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008165</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Fri, 03 Mar 2006 23:57:25 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Sat, 04 Mar 2006 00:25:20 GMT]]></title><description><![CDATA[<p>Dauert jetzt zu lange das zu erklären, hat was damit zu tun eine DLL für ein existierendes Programm zu coden dessen Code man nicht hat.</p>
<p>Ich suche eine Funktion/Macro, die die Adressen beliebige Funktionen und Methoden zurückgibt. Bisher mache ich das über ein Makro mit Assembler, da ich dann nur z.B. GetAddress (Klasse::Methode) machen muss. Leider kann ich auf die Art nicht die Adresse von überladenen Funktionen auslesen, da z.B. folgendes nicht möglich ist:</p>
<pre><code class="language-cpp">__asm mov eax, (void (CTest::*)())&amp;CTest::FunktionD
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9894">@FireFlow</a>: Deine getAddress-Funktion ist nichts anderes als die identische Funktion <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008175</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Sat, 04 Mar 2006 00:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Sat, 04 Mar 2006 08:41:05 GMT]]></title><description><![CDATA[<p>Neku schrieb:</p>
<blockquote>
<pre><code class="language-cpp">__asm mov eax, (void (CTest::*)())&amp;CTest::FunktionD
</code></pre>
</blockquote>
<p>Diese Zeile nicht sinnvoll. Ein Pointer-To-Member belegt üblicherweise 12-16 Bytes und kann somit sehr schlecht ins EAX-Register passen.</p>
<p>Auf Methoden/Funktionen eines Programms, welches du nicht kennst, kannst du nicht (sicher) zugreifen. Dazu fehlen dir Informationen. Z.B. welche Aufrufkonvention verwendet wird. Oder mit welchem Compiler das Programm übersetzt wurde und wie z.B. vtables im Speicher organisiert sind.</p>
<p>Im übrigen, &amp;Klasse::Methode sollte niemals den virtuellen Mechanismus bemühen (wie auch - vtables existieren zwar pro Klasse, sind aber objektgebunden) sondern immer einen Zeiger auf die Methode der bezeichneten Klasse geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008232</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Sat, 04 Mar 2006 08:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Sun, 05 Mar 2006 17:58:06 GMT]]></title><description><![CDATA[<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Neku schrieb:</p>
<blockquote>
<pre><code class="language-cpp">__asm mov eax, (void (CTest::*)())&amp;CTest::FunktionD
</code></pre>
</blockquote>
<p>Diese Zeile nicht sinnvoll. Ein Pointer-To-Member belegt üblicherweise 12-16 Bytes und kann somit sehr schlecht ins EAX-Register passen.</p>
</blockquote>
<p>Wieso 12-16 Byte?<br />
Mein Problem ist eher, dass der Cast-Operator hier nicht genutzt werden kann, und ich somit nicht bestimmen kann, welche der überladenen Methoden verwendet wird.</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Auf Methoden/Funktionen eines Programms, welches du nicht kennst, kannst du nicht (sicher) zugreifen. Dazu fehlen dir Informationen. Z.B. welche Aufrufkonvention verwendet wird. Oder mit welchem Compiler das Programm übersetzt wurde und wie z.B. vtables im Speicher organisiert sind.</p>
</blockquote>
<p>Das Programm kenne ich schon, nur den Quellcode nicht.</p>
<p>7H3 N4C3R schrieb:</p>
<blockquote>
<p>Im übrigen, &amp;Klasse::Methode sollte niemals den virtuellen Mechanismus bemühen (wie auch - vtables existieren zwar pro Klasse, sind aber objektgebunden) sondern immer einen Zeiger auf die Methode der bezeichneten Klasse geben.</p>
</blockquote>
<p>Ich möchte nur die Adresse der Methode, ob sie virtuell ist spielt dabei keine Rolle - der vtable ist in meinem Fall unwichtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009150</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Sun, 05 Mar 2006 17:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Sun, 05 Mar 2006 18:59:27 GMT]]></title><description><![CDATA[<p>Du hast echt keine Ahnung von was du überhaupt sprichst, gell?!<br />
Die vtable ist für dich verdammt wichtig, wenn du virtuelle funktionen aufrufen willst...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009210</guid><dc:creator><![CDATA[LOLOLOLOL]]></dc:creator><pubDate>Sun, 05 Mar 2006 18:59:27 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Sun, 05 Mar 2006 19:02:21 GMT]]></title><description><![CDATA[<p>Lies bitte erstmal den ganzen Thread. Ich habe nie davon geschrieben, dass ich die Methode aufrufen möchte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009214</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Sun, 05 Mar 2006 19:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Mon, 06 Mar 2006 07:38:44 GMT]]></title><description><![CDATA[<p>Neku schrieb:</p>
<blockquote>
<p>Lies bitte erstmal den ganzen Thread. Ich habe nie davon geschrieben, dass ich die Methode aufrufen möchte...</p>
</blockquote>
<p>Was willst du sonst mit den Funktionen machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009407</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Mar 2006 07:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Mon, 06 Mar 2006 07:40:15 GMT]]></title><description><![CDATA[<p>[quote=&quot;LOLOLOLOL&quot;]Du hast echt keine Ahnung von was du überhaupt sprichst, gell?!<br />
quote]</p>
<p>ich habe das gefühl, er weiß allgemein nicht von was er redet!<br />
er hat hier in einem thread auch schon gesagt, das es egal ist wo ein zeiger hinzeigt...</p>
<p>ich denk langsam, er isn troll...</p>
<p>Neku schrieb:</p>
<blockquote>
<p>Lies bitte erstmal den ganzen Thread. Ich habe nie davon geschrieben, dass ich die Methode aufrufen möchte...</p>
</blockquote>
<p>lies du dir nochmal paar tutorials durch...oben rechts in der ecke findest du einen link, da gibts viele gute anfängertutorials...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009409</guid><dc:creator><![CDATA[LOLOLOLOLOL]]></dc:creator><pubDate>Mon, 06 Mar 2006 07:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Mon, 06 Mar 2006 09:04:12 GMT]]></title><description><![CDATA[<p>Neku schrieb:</p>
<blockquote>
<p>Wieso 12-16 Byte?<br />
Mein Problem ist eher, dass der Cast-Operator hier nicht genutzt werden kann, und ich somit nicht bestimmen kann, welche der überladenen Methoden verwendet wird.</p>
</blockquote>
<p>Fang doch mal mit diesem Artikel hier an:<br />
<a href="http://www.codeproject.com/cpp/FastDelegate.asp" rel="nofollow">http://www.codeproject.com/cpp/FastDelegate.asp</a></p>
<p>Und lies insbesondere den Abschnitt &quot;Member Function Pointers - why are they so complex?&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009458</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Mon, 06 Mar 2006 09:04:12 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Mon, 06 Mar 2006 17:04:42 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Neku schrieb:</p>
<blockquote>
<p>Lies bitte erstmal den ganzen Thread. Ich habe nie davon geschrieben, dass ich die Methode aufrufen möchte...</p>
</blockquote>
<p>Was willst du sonst mit den Funktionen machen?</p>
</blockquote>
<p>Da ich zur Laufzeit per DLL in einem Programm Methoden durch eigene überschreibe brauche ich die Adresse, damit ich einen Sprung in den Speicher schreiben kann, wo sich die Originalmethode befindet. Da ich aber versuche, Funktionen, Methoden und Objekte möglichst genau zu rekonstruieren habe ich auch virtuelle Methoden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1009903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1009903</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Mon, 06 Mar 2006 17:04:42 GMT</pubDate></item><item><title><![CDATA[Reply to Adressen von virtuellen und überladenen Funktion erhalten on Sat, 15 Jul 2006 05:00:36 GMT]]></title><description><![CDATA[<p>Ich habe gestern erneut einen halben Tag damit verbracht, einen Weg zu suchen, die Adresse einer virtuellen Funktion unter g++ zu erhalten, wobei ich nun endlich Erfolg hatte!</p>
<p>Falls mal noch jemand wissen muss, wie das möglich ist:<br />
Den Quellcode mit dem Argument &quot;<a href="http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Bound-member-functions.html#Bound-member-functions" rel="nofollow">-Wno-pmf-conversions</a>&quot; kompilieren, sodass man problemlos &amp;Klasse::VirtuelleMethode nach void* casten kann.</p>
<p>Wofür ich noch immer keine Lösung gefunden habe sind sind Konstruktoren und Destruktoren <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="😉"
    /></p>
<p>Grüße,<br />
Marc</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1098047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1098047</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Sat, 15 Jul 2006 05:00:36 GMT</pubDate></item></channel></rss>