<?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[Funktion die andere Funktion über Zeiger aufruft innerhalb einer Klasse]]></title><description><![CDATA[<p>Hallo, ich hoffeine Thread Beschreibung zum Thema passt.</p>
<p>Bei obj.call( obj.print ); bekomme ich:</p>
<pre><code>[C++ Fehler] Unit1.cpp(25): E2034 Konvertierung von 'int (* (_closure )())()' nach 'int (*)()' nicht möglich
[C++ Fehler] Unit1.cpp(25): E2342 Keine Übereinstimmung des Typs beim Parameter 'func' ('int (*)()' erwartet, 'void' erhalten)
[C++ Warnung] Unit1.cpp(43): W8070 Funktion sollte einen Wert zurückgeben
</code></pre>
<p>Wie macht man das richtig?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class win
{

public:
        int print();
        int call (  int (*func)() );

};

int print_2 ();

int main()
{
win obj;

        obj.call( &amp;print_2 ); // Funktioniert
        obj.call( obj.print );

system(&quot;PAUSE&quot;);
}
//---------------------------------------------------------------------------

int win :: print()
{
        cout&lt;&lt;&quot;ok aus class&quot;;
        return 0;
}

int win ::  call (  int (*func)() )
{
        func();
}

int print_2()
{
        cout&lt;&lt;&quot;ok&quot;;
        return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/298301/funktion-die-andere-funktion-über-zeiger-aufruft-innerhalb-einer-klasse</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 22:32:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298301.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 17 Jan 2012 15:59:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion die andere Funktion über Zeiger aufruft innerhalb einer Klasse on Tue, 17 Jan 2012 15:59:36 GMT]]></title><description><![CDATA[<p>Hallo, ich hoffeine Thread Beschreibung zum Thema passt.</p>
<p>Bei obj.call( obj.print ); bekomme ich:</p>
<pre><code>[C++ Fehler] Unit1.cpp(25): E2034 Konvertierung von 'int (* (_closure )())()' nach 'int (*)()' nicht möglich
[C++ Fehler] Unit1.cpp(25): E2342 Keine Übereinstimmung des Typs beim Parameter 'func' ('int (*)()' erwartet, 'void' erhalten)
[C++ Warnung] Unit1.cpp(43): W8070 Funktion sollte einen Wert zurückgeben
</code></pre>
<p>Wie macht man das richtig?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class win
{

public:
        int print();
        int call (  int (*func)() );

};

int print_2 ();

int main()
{
win obj;

        obj.call( &amp;print_2 ); // Funktioniert
        obj.call( obj.print );

system(&quot;PAUSE&quot;);
}
//---------------------------------------------------------------------------

int win :: print()
{
        cout&lt;&lt;&quot;ok aus class&quot;;
        return 0;
}

int win ::  call (  int (*func)() )
{
        func();
}

int print_2()
{
        cout&lt;&lt;&quot;ok&quot;;
        return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2169187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169187</guid><dc:creator><![CDATA[ClassFuncPtr]]></dc:creator><pubDate>Tue, 17 Jan 2012 15:59:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion die andere Funktion über Zeiger aufruft innerhalb einer Klasse on Tue, 17 Jan 2012 16:14:49 GMT]]></title><description><![CDATA[<p>Nichtstatische Memberfunktionen operieren auf einem Objekt, sie haben einen unsichtbaren &quot;this&quot; Parameter, also würde das &quot;print()&quot; erweitert zu &quot;print(win* this)&quot;. Du könntest die Funktion z.B. statisch machen. (Und dann einen solchen Pointer &quot;manuell&quot; mitgeben, falls gewollt.)<br />
Oder du liest: <a href="http://www.parashift.com/c++-faq-lite/pointers-to-members.html" rel="nofollow">http://www.parashift.com/c++-faq-lite/pointers-to-members.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169195</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Tue, 17 Jan 2012 16:14:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion die andere Funktion über Zeiger aufruft innerhalb einer Klasse on Tue, 17 Jan 2012 20:45:24 GMT]]></title><description><![CDATA[<p>Das, was du willst ist ein Methodenzeiger...<br />
call müsste wie folgt deklariert werden:</p>
<pre><code class="language-cpp">int call (  int (win::*func)() );
</code></pre>
<p>Beim Aufruf muss es dann auch</p>
<pre><code class="language-cpp">obj.call(&amp;win::print);
</code></pre>
<p>heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2169305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2169305</guid><dc:creator><![CDATA[Soley]]></dc:creator><pubDate>Tue, 17 Jan 2012 20:45:24 GMT</pubDate></item></channel></rss>