<?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[Function Pointer To Member Problem]]></title><description><![CDATA[<p>Hallo Forum!</p>
<p>Ich habe gerade das Problem eine Methode an einen Function Pointer zu übergeben:</p>
<pre><code class="language-cpp">class M {
  public :

  bool (*CollHandler)(Collision* CollisionPartner);
}
</code></pre>
<pre><code class="language-cpp">class FX {
  M* Model;

  FX();

  bool CollHandler(Collision* CollisionPartner);  
}

FX::FX() {
   Model-&gt;CollHandler= &amp;FX::CollHandler;
}

bool FX::CollHandler(Collision* CollisionPartner) {

}
</code></pre>
<p>Leider schlägt <strong>Model-&gt;CollHandler= &amp;FX::CollHandler;</strong> immer fehl:</p>
<p>error C2440: '=' : cannot convert from 'bool (__thiscall FX::* )(Collision *)' to 'bool (__cdecl *)(Collision *)'</p>
<p>Aber hier <a href="http://www.newty.de/fpt/fpt.html#assign" rel="nofollow">http://www.newty.de/fpt/fpt.html#assign</a> wird<br />
es doch eigentlich genauso gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221818/function-pointer-to-member-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 19:42:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221818.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Sep 2008 20:19:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Function Pointer To Member Problem on Wed, 03 Sep 2008 20:19:50 GMT]]></title><description><![CDATA[<p>Hallo Forum!</p>
<p>Ich habe gerade das Problem eine Methode an einen Function Pointer zu übergeben:</p>
<pre><code class="language-cpp">class M {
  public :

  bool (*CollHandler)(Collision* CollisionPartner);
}
</code></pre>
<pre><code class="language-cpp">class FX {
  M* Model;

  FX();

  bool CollHandler(Collision* CollisionPartner);  
}

FX::FX() {
   Model-&gt;CollHandler= &amp;FX::CollHandler;
}

bool FX::CollHandler(Collision* CollisionPartner) {

}
</code></pre>
<p>Leider schlägt <strong>Model-&gt;CollHandler= &amp;FX::CollHandler;</strong> immer fehl:</p>
<p>error C2440: '=' : cannot convert from 'bool (__thiscall FX::* )(Collision *)' to 'bool (__cdecl *)(Collision *)'</p>
<p>Aber hier <a href="http://www.newty.de/fpt/fpt.html#assign" rel="nofollow">http://www.newty.de/fpt/fpt.html#assign</a> wird<br />
es doch eigentlich genauso gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576114</guid><dc:creator><![CDATA[riddler3]]></dc:creator><pubDate>Wed, 03 Sep 2008 20:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer To Member Problem on Wed, 03 Sep 2008 20:36:12 GMT]]></title><description><![CDATA[<p>laut der Fehlermeldung liegt das an unterschiedlichen calling conventions.</p>
<p>Ist eigendlich auch irgendwie logisch, dass das nicht geht, da du ja eine memberfunkiotn übergibst.</p>
<p>Für die muss der Kompiler noch einen weiteren Parameter erzeugen, nämlich das entsprechende Objekt.<br />
wenn du aus bool FX::CollHandler eine statische memberfunktion machst, könnte es gehen.</p>
<p>Allerdings sieht das was du vor hast, recht merkwürdich aus. Vielleicht solltest du dich mal mit dem Konzept und Anwendung von Functors (Funktionsobjekte) vertraut machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576126</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Wed, 03 Sep 2008 20:36:12 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer To Member Problem on Wed, 03 Sep 2008 20:39:02 GMT]]></title><description><![CDATA[<p>Nabend,</p>
<p>das geht nicht, weil jede Memberfunktion implizit den this-Zeiger mitfuehrt<br />
und er daher nicht mit einem normalen Funktionszeiger kompatibel ist.</p>
<p>Daher musst du dir einen Zeiger auf eine Memberfunktion erstellen:</p>
<pre><code class="language-cpp">class my_class {
  //...
};

some_return_type (my_class::*member_fun)(int const&amp;);
</code></pre>
<p>Nun kann man 'member_fun' eine Memberfunktion der Klasse 'my_class' zuweisen,<br />
welche selbstverstaendlich den Beschraenkungen des Rueckgabe-Parameters und<br />
der Funktionssignatur genuegen muss.</p>
<p>gruss<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576127</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Wed, 03 Sep 2008 20:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer To Member Problem on Wed, 03 Sep 2008 20:53:16 GMT]]></title><description><![CDATA[<p>ok danke habs jetzt mit nem static wrapper gelöst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576142</guid><dc:creator><![CDATA[riddler3]]></dc:creator><pubDate>Wed, 03 Sep 2008 20:53:16 GMT</pubDate></item></channel></rss>