<?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[Funktionspointer zurückgeben]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte einen Funktionspointer zurück geben, aber nicht als Rückgabeparameter sondern indem ich einen &quot;leeren&quot; Funktionspointer übergebe und in der Funktion dann beschreibe.</p>
<p>So hatte ich mir das vorgestellt, aber es funktioniert nicht.<br />
Es lässt sich zwar kompilieren und linken, aber wenn ich den Funkionspointer dann in der main aufrufe kommt eine Fehlermeldung weil der Pointer ungültig ist.<br />
Er wird nicht korrekt in der Funktion getFunction beschrieben.</p>
<pre><code>class myClass {
public:
    // Define the type func as a pointer to a void member function 
    // in this class with no parameters
    typedef void (myClass::*func)();

    bool getFunction(func p);
    void Test();
};

bool myClass::getFunction(myClass::func p)
{ 
     p = &amp;myClass::Test;
     return true;
}

void myClass::Test()
{
    printf(&quot;nada1\n&quot;);
}

int main() {
    myClass c;
    myClass::func p;

    c.getFunction(p);
    (c.*p)();

    // Or using a pointer:
    myClass *cp = &amp;c;

    cp-&gt;getFunction(p);
    (cp-&gt;*p)();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/313163/funktionspointer-zurückgeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 07:50:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313163.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jan 2013 13:24:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer zurückgeben on Wed, 23 Jan 2013 13:48:46 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte einen Funktionspointer zurück geben, aber nicht als Rückgabeparameter sondern indem ich einen &quot;leeren&quot; Funktionspointer übergebe und in der Funktion dann beschreibe.</p>
<p>So hatte ich mir das vorgestellt, aber es funktioniert nicht.<br />
Es lässt sich zwar kompilieren und linken, aber wenn ich den Funkionspointer dann in der main aufrufe kommt eine Fehlermeldung weil der Pointer ungültig ist.<br />
Er wird nicht korrekt in der Funktion getFunction beschrieben.</p>
<pre><code>class myClass {
public:
    // Define the type func as a pointer to a void member function 
    // in this class with no parameters
    typedef void (myClass::*func)();

    bool getFunction(func p);
    void Test();
};

bool myClass::getFunction(myClass::func p)
{ 
     p = &amp;myClass::Test;
     return true;
}

void myClass::Test()
{
    printf(&quot;nada1\n&quot;);
}

int main() {
    myClass c;
    myClass::func p;

    c.getFunction(p);
    (c.*p)();

    // Or using a pointer:
    myClass *cp = &amp;c;

    cp-&gt;getFunction(p);
    (cp-&gt;*p)();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2292614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2292614</guid><dc:creator><![CDATA[Michael65589]]></dc:creator><pubDate>Wed, 23 Jan 2013 13:48:46 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer zurückgeben on Wed, 23 Jan 2013 13:48:18 GMT]]></title><description><![CDATA[<p>Habs gelöst.</p>
<pre><code>class myClass {
public:
    // Define the type func as a pointer to a void member function
    // in this class with no parameters
    typedef void (myClass::*func)();

    bool getFunction(func* p);
    void Test();
};

bool myClass::getFunction(func* p)
{
     *p = &amp;myClass::Test;
     return true;
}

void myClass::Test()
{
    printf(&quot;nada1\n&quot;);
}

int main() {
    myClass c;
    myClass::func p;

    c.getFunction(&amp;p);
    (c.*p)();

    // Or using a pointer:
    myClass *cp = &amp;c;

    cp-&gt;getFunction(p);
    (cp-&gt;*p)();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2292621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2292621</guid><dc:creator><![CDATA[Michael65589]]></dc:creator><pubDate>Wed, 23 Jan 2013 13:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer zurückgeben on Wed, 23 Jan 2013 13:49:34 GMT]]></title><description><![CDATA[<p>Das ist nicht so ganz trivial...<br />
Siehe dazu auch:<br />
<a href="http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible" rel="nofollow">http://www.codeproject.com/Articles/7150/Member-Function-Pointers-and-the-Fastest-Possible</a></p>
<p>Am einfachsten und sichersten geht es in C++ (nur) via templates!</p>
<p>Oder verwende einfach boost.function!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2292623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2292623</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 23 Jan 2013 13:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer zurückgeben on Wed, 23 Jan 2013 13:49:59 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/u18363" rel="nofollow">Jochen Kalmbach</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/f4" rel="nofollow">WinAPI</a> in das Forum <a href="http://www.c-plusplus.net/forum/f15" rel="nofollow">C++ (auch C++0x und C++11)</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2292624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2292624</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 23 Jan 2013 13:49:59 GMT</pubDate></item></channel></rss>