<?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[Funktionszeiger auf Funktion einer bestimmten Klassenfunktion]]></title><description><![CDATA[<p>hi,</p>
<p>ich habe eine Instanz von</p>
<pre><code class="language-cpp">typedef void (*ProcessReport)(int,int);
ProcessReport pProcessReport
</code></pre>
<p>und möchte nun in diese einen Zeiger auf eine Memberfunktion speichern:</p>
<pre><code class="language-cpp">class Cc
{
void func()
{
pProcessReport = func2;
}

void func2(int 1,int 2)
{
}

};
</code></pre>
<p>wie mach ich das am besten? <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172611/funktionszeiger-auf-funktion-einer-bestimmten-klassenfunktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 01:01:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172611.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Feb 2007 18:21:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 18:21:27 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich habe eine Instanz von</p>
<pre><code class="language-cpp">typedef void (*ProcessReport)(int,int);
ProcessReport pProcessReport
</code></pre>
<p>und möchte nun in diese einen Zeiger auf eine Memberfunktion speichern:</p>
<pre><code class="language-cpp">class Cc
{
void func()
{
pProcessReport = func2;
}

void func2(int 1,int 2)
{
}

};
</code></pre>
<p>wie mach ich das am besten? <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224015</guid><dc:creator><![CDATA[ESS_CB]]></dc:creator><pubDate>Tue, 06 Feb 2007 18:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 18:37:18 GMT]]></title><description><![CDATA[<p>Garnicht, denn ein Pointer-To-Member sieht anders aus:</p>
<pre><code class="language-cpp">typedef void (Cc::*ProcessReport)(int,int);
ProcessReport pProcessReport = &amp;Cc::func;
</code></pre>
<p>Logischerweise brauchst Du zum Aufrufen ein this-Objekt für die Methode:</p>
<pre><code class="language-cpp">objOfCc.*pProcessReport(0,0);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1224027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224027</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 06 Feb 2007 18:37:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 19:03:25 GMT]]></title><description><![CDATA[<p>das ist das Problem^^</p>
<p>ich wöllte mich eben auf die Klasse nicht festlegen.</p>
<p>Geht das auch irgendwie das ich ein und die selbe Definition des FunctionPointers für mehrere Klassen nehmen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224036</guid><dc:creator><![CDATA[ESS_CB]]></dc:creator><pubDate>Tue, 06 Feb 2007 19:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 19:30:03 GMT]]></title><description><![CDATA[<p>Nein, nicht schön (kannst dir natürlich was Ekliges mit Casts bauen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224054</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 06 Feb 2007 19:30:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 20:17:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich verzweifel hier gerade:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;conio.h&gt;

class Clazz{
private:
    int i;
public:
    Clazz(int i){this-&gt;i=i;}
    void mult(int i){
         std::cout &lt;&lt; this-&gt;i * i &lt;&lt; std::endl;
    }
    void add(int i){
         std::cout &lt;&lt; this-&gt;i + i &lt;&lt; std::endl;
    }
};

typedef void (Clazz::*Method)(int);

int main(int argc, char** argv)
{
    Method meth1 = &amp;Clazz::mult;
    Method meth2 = &amp;Clazz::add;
    Clazz c1 = Clazz(3);
    Clazz c2 = Clazz(5);
    c1.*meth1(2);
    c1.*meth2(2);
    c2.*meth1(5);
    c2.*meth2(5);
    _getch();
}
</code></pre>
<p>Warum funktioniert das denn hier nicht?</p>
<p>must use .* or -&gt;* to call pointer-to-member function in <code>meth1 (...)' bzw. must use .* or -&gt;* to call pointer-to-member function in</code>meth2 (...)'</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224080</guid><dc:creator><![CDATA[CppBeginner]]></dc:creator><pubDate>Tue, 06 Feb 2007 20:17:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 20:20:49 GMT]]></title><description><![CDATA[<p>*argh*</p>
<pre><code class="language-cpp">(c1.*meth1)(2);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1224083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224083</guid><dc:creator><![CDATA[CppBeginner]]></dc:creator><pubDate>Tue, 06 Feb 2007 20:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Tue, 06 Feb 2007 21:26:50 GMT]]></title><description><![CDATA[<p>Also, ich hätte drei Lösungsansätze:</p>
<ul>
<li>Verwendung von virtuellen Methoden und überschreiben</li>
<li>Verwendung von <a href="http://www.boost.org/libs/bind/bind.html" rel="nofollow">boost::bind</a>, <a href="http://www.boost.org/libs/bind/mem_fn.html" rel="nofollow">boost::mem_fn</a> und <a href="http://www.boost.org/doc/html/function.html" rel="nofollow">boost::function</a>,</li>
<li>oder, vielleicht die schnellste Variante <a href="http://www.codeproject.com/cpp/FastDelegate.asp" rel="nofollow">http://www.codeproject.com/cpp/FastDelegate.asp</a></li>
</ul>
<p>Am elegantesten ist die erste Methode. Je nach Zweck können aber auch die anderen beiden vernünftig sein. Die zweite ist im TR1 enthalten und wird wahrscheinlich in C++0x standard sein. Bei der dritten bin ich mir nicht ganz sicher, aber sie ist auch recht portabel und vor allem schnell.<br />
(Variante 1 ist auch sehr schnell, aber wenn Vererbung nicht passt, dann zwei oder drei, wobei drei wesentlich schneller ist, zwei aber flexibler).</p>
<p>MfG<br />
DDR-RAM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224111</guid><dc:creator><![CDATA[DDR-RAM]]></dc:creator><pubDate>Tue, 06 Feb 2007 21:26:50 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionszeiger auf Funktion einer bestimmten Klassenfunktion on Wed, 07 Feb 2007 15:01:28 GMT]]></title><description><![CDATA[<p>danke danke danke^^</p>
<p>ich habs einfach (naja nicht ganz ;)) mit ner zwischengeschalteten Funktion gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1224484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1224484</guid><dc:creator><![CDATA[ESS_CB]]></dc:creator><pubDate>Wed, 07 Feb 2007 15:01:28 GMT</pubDate></item></channel></rss>