<?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[FunctionsPointer]]></title><description><![CDATA[<p>This code läuft fehlerfrei:</p>
<pre><code class="language-cpp">void Func1( void ) {
cout&lt;&lt;&quot;HALLO!&quot;&lt;&lt;endl;}
void ( *FuncPtr1 )( void )=Func1 ;

void main( void ){  
  ( FuncPtr1 )( ) ;
}
</code></pre>
<p>und hier bekomme ich einen Fehlerc:error C2440: '=' : cannot convert from 'void' to 'void (__cdecl *)(void)'</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class dummy{
	public:
		void(*pf)(void);
		void func(void){cout&lt;&lt;&quot;HALLO!&quot;&lt;&lt;endl;}
		dummy(){
			pf=func;
		}
	private:

};

int main(){
	dummy d;
	d.pf();
}
</code></pre>
<p>Was ist hier falsch??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150809/functionspointer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 21:36:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150809.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 Jun 2006 12:21:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 12:21:11 GMT]]></title><description><![CDATA[<p>This code läuft fehlerfrei:</p>
<pre><code class="language-cpp">void Func1( void ) {
cout&lt;&lt;&quot;HALLO!&quot;&lt;&lt;endl;}
void ( *FuncPtr1 )( void )=Func1 ;

void main( void ){  
  ( FuncPtr1 )( ) ;
}
</code></pre>
<p>und hier bekomme ich einen Fehlerc:error C2440: '=' : cannot convert from 'void' to 'void (__cdecl *)(void)'</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class dummy{
	public:
		void(*pf)(void);
		void func(void){cout&lt;&lt;&quot;HALLO!&quot;&lt;&lt;endl;}
		dummy(){
			pf=func;
		}
	private:

};

int main(){
	dummy d;
	d.pf();
}
</code></pre>
<p>Was ist hier falsch??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081375</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Tue, 20 Jun 2006 12:21:11 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 12:34:11 GMT]]></title><description><![CDATA[<p>carmen schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class dummy{
	public:
		void(*pf)(void);
		void func(void){cout&lt;&lt;&quot;HALLO!&quot;&lt;&lt;endl;}
		dummy(){
			pf=func;
		}
};
</code></pre>
<p>Was ist hier falsch??</p>
</blockquote>
<p>func ist eine nichtstatische memberfunktion und kann nicht in einen funktionspointer umgewandelt werden. was du hier benötigst ist ein memberfunktionspointer:</p>
<pre><code class="language-cpp">class dummy{
	public:
		void(dummy::*pf)(void);
		void func(void){cout&lt;&lt;&quot;HALLO!&quot;&lt;&lt;endl;}
		dummy(){
			pf=&amp;func;
		}
};
int main(){
    dummy d;
    (d.*pf)();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1081387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081387</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Jun 2006 12:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 12:38:02 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-150319.html" rel="nofollow">Post von camper</a></p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081392</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Tue, 20 Jun 2006 12:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 12:54:08 GMT]]></title><description><![CDATA[<p>Danke! aber</p>
<p>funktioniert nicht</p>
<p>Error:'pf':undeclared identifier</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081411</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Tue, 20 Jun 2006 12:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 13:02:21 GMT]]></title><description><![CDATA[<p>carmen schrieb:</p>
<blockquote>
<p>Danke! aber</p>
<p>funktioniert nicht</p>
<p>Error:'pf':undeclared identifier</p>
</blockquote>
<p>stimmt. muss nat.</p>
<pre><code class="language-cpp">(d.*d.pf)()
</code></pre>
<p>heißen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081431</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Jun 2006 13:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 13:05:46 GMT]]></title><description><![CDATA[<p>- humbug gestrichen -</p>
<p>Mit dem alten Code bekommt mein GCC:</p>
<pre><code>ISO C++ forbids taking the address of an unqualified non-static member function to form a pointer to member function.  Say `&amp;dummy::func'
</code></pre>
<p>EDIT:<br />
Okay, mein Fehler - leuchtet ein.</p>
<p>Weiterführende Frage:<br />
Verbietet ISO C++ jetzt die Adresse eines non-static Member zu nehmen oder meint G++ das nur?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081432</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 20 Jun 2006 13:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 13:16:24 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>- humbug gestrichen -</p>
<p>Mit dem alten Code bekommt mein GCC:</p>
<pre><code>ISO C++ forbids taking the address of an unqualified non-static member function to form a pointer to member function.  Say `&amp;dummy::func'
</code></pre>
<p>EDIT:<br />
Okay, mein Fehler - leuchtet ein.</p>
<p>Weiterführende Frage:<br />
Verbietet ISO C++ jetzt die Adresse eines non-static Member zu nehmen oder meint G++ das nur?</p>
</blockquote>
<p>die fehlermeldung ist schon korrekt insofern, als das man immer den qualifizierten namen des members benutzen muss (selbst wenn es im scope ist) - das war in meinem code also auch noch falsch. ansonsten ist es eine frage der definition von adresse. im allgemeinen würde ich für eine beliebige entität x als adresse den wert dieses ausdrucks ansehen:</p>
<pre><code class="language-cpp">typedef size_t address_type; // oder ein anderer geeigneter typ
address_type address = reinterpret_cast&lt;address_type&gt;(reinterpret_cast&lt;void*&gt;(&amp;x));
</code></pre>
<p>und das scheitert für funktionen und member bereits daran, dass der cast nach void* bereits nicht möglich ist (das ist vorgesehn für funktionen als conditionally defined im nächsten standard). man kann sich auch leicht überlegen, warum diese definition für member keinen sinn macht: ein pointer to member ist ja letzlich nur so etwas wie ein offset. tatsächlich könnte eine implementation schlicht so arbeiten:</p>
<pre><code class="language-cpp">reinterpret_cast&lt;size_t&gt;(&amp;T::x)==offsetof(T,x)
</code></pre>
<p>wobei wir dann nicht auf PODs beschränkt sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081444</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 20 Jun 2006 13:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to FunctionsPointer on Tue, 20 Jun 2006 13:21:53 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a>.<br />
DANKE!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1081451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1081451</guid><dc:creator><![CDATA[carmen]]></dc:creator><pubDate>Tue, 20 Jun 2006 13:21:53 GMT</pubDate></item></channel></rss>