<?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[Pointer auf eine Member-Funktion]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab gerade keine Idee mehr... Ich hab folgenden Code-Ausschnitt:</p>
<pre><code class="language-cpp">class Data;

typedef double (Data::*value_func)(int);

class Data
{
public:
  double Value(int i) { return 1.0*i; }

  double Max(value_func func, int max_index)
  {
    double temp = this-&gt;func(0);                             // error: ‘class Data’ has no member named ‘func’
    for (int i=0; i&lt;=max_index; ++i)
      if (temp&lt;this-&gt;func(i))                                // error: ‘class Data’ has no member named ‘func’
        temp = this-&gt;func(i);                                // error: ‘class Data’ has no member named ‘func’
  }
};

int main()
{
  Data data;
  std::cout &lt;&lt; data.Max(data.Value, 10) &lt;&lt; std::endl;        // error: no matching function for call to ‘Data::Max(&lt;unresolved overloaded function type&gt;, int)’
                                                             // note: candidates are: double Data::Max(double (Data::*)(int), int)
}
</code></pre>
<p>Die Fehler-Meldungen stehen als Kommentar hinter den entsprechenden Zeilen.</p>
<p>Funktionspointer von nicht-static Member-Funktionen sind im Allgemeinen nicht möglich. Aber in diesem Fall sollten ja die Funktion Max auf die Daten der eigenen Klasse zugreifen, d.h. der this-Pointer wäre vorhanden. Allerdings wird der Ausdruck 'this-&gt;func' nicht so interpretiert, wie ich mir das wünschen würde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Hmmm... kann mir jemand einen Tipp geben?</p>
<p>Grüße, K.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221138/pointer-auf-eine-member-funktion</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 08:12:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221138.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Aug 2008 21:35:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Mon, 25 Aug 2008 21:35:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab gerade keine Idee mehr... Ich hab folgenden Code-Ausschnitt:</p>
<pre><code class="language-cpp">class Data;

typedef double (Data::*value_func)(int);

class Data
{
public:
  double Value(int i) { return 1.0*i; }

  double Max(value_func func, int max_index)
  {
    double temp = this-&gt;func(0);                             // error: ‘class Data’ has no member named ‘func’
    for (int i=0; i&lt;=max_index; ++i)
      if (temp&lt;this-&gt;func(i))                                // error: ‘class Data’ has no member named ‘func’
        temp = this-&gt;func(i);                                // error: ‘class Data’ has no member named ‘func’
  }
};

int main()
{
  Data data;
  std::cout &lt;&lt; data.Max(data.Value, 10) &lt;&lt; std::endl;        // error: no matching function for call to ‘Data::Max(&lt;unresolved overloaded function type&gt;, int)’
                                                             // note: candidates are: double Data::Max(double (Data::*)(int), int)
}
</code></pre>
<p>Die Fehler-Meldungen stehen als Kommentar hinter den entsprechenden Zeilen.</p>
<p>Funktionspointer von nicht-static Member-Funktionen sind im Allgemeinen nicht möglich. Aber in diesem Fall sollten ja die Funktion Max auf die Daten der eigenen Klasse zugreifen, d.h. der this-Pointer wäre vorhanden. Allerdings wird der Ausdruck 'this-&gt;func' nicht so interpretiert, wie ich mir das wünschen würde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>Hmmm... kann mir jemand einen Tipp geben?</p>
<p>Grüße, K.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571385</guid><dc:creator><![CDATA[Karl Blau]]></dc:creator><pubDate>Mon, 25 Aug 2008 21:35:45 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Mon, 25 Aug 2008 21:51:12 GMT]]></title><description><![CDATA[<p>schau mal in die libsvm,<br />
da wird sowas gemacht mit den Kernelfunktionen, spontan weiß ich das jetzt auch nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571396</guid><dc:creator><![CDATA[vlad_tepesch]]></dc:creator><pubDate>Mon, 25 Aug 2008 21:51:12 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Mon, 25 Aug 2008 21:55:55 GMT]]></title><description><![CDATA[<p>mach es so <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code class="language-cpp">class Data;

typedef double (Data::*value_func)(int); 

class Data 
{ 
public: 
	double Value(int i) { return 1.0*i; } 

	double Max(value_func func, int max_index) 
	{ 
		double temp = (this-&gt;*func)(0);                             // -&gt;*   und    ()   !!
		for (int i = 0; i &lt;= max_index; ++i)
			if (temp &lt; (this-&gt;*func)(i))                                 
				temp = (this-&gt;*func)(i); 
		return temp; 
	} 
}; 

int main() 
{ 
	Data data; 
	std::cout &lt;&lt; data.Max(&amp;Data::Value, 10) &lt;&lt; std::endl;        // addresse von der klassenfunktion. diese funktion hat noch kein objekt 

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1571404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571404</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Mon, 25 Aug 2008 21:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Mon, 25 Aug 2008 22:56:48 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571441</guid><dc:creator><![CDATA[Karl Blau]]></dc:creator><pubDate>Mon, 25 Aug 2008 22:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Mon, 25 Aug 2008 22:59:15 GMT]]></title><description><![CDATA[<p>ist zwar schon spät, aber meines erachtens gehört da kein this-&gt; davor... ^^</p>
<p>gn8 : &gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571442</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 25 Aug 2008 22:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Tue, 26 Aug 2008 05:17:06 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>ist zwar schon spät, aber meines erachtens gehört da kein this-&gt; davor... ^^</p>
</blockquote>
<p>Und von was willst Du den -&gt;* Operator aufrufen, wenn nicht von this? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571465</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 26 Aug 2008 05:17:06 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Tue, 26 Aug 2008 18:10:23 GMT]]></title><description><![CDATA[<p>gibts da nicht den ::* operator um mit dem klassennamen aufzurufen<br />
(wieder ungetestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571862</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Tue, 26 Aug 2008 18:10:23 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer auf eine Member-Funktion on Tue, 26 Aug 2008 18:12:26 GMT]]></title><description><![CDATA[<p>helferlein schrieb:</p>
<blockquote>
<p>gibts da nicht den ::* operator um mit dem klassennamen aufzurufen<br />
(wieder ungetestet)</p>
</blockquote>
<p>Du brauchst doch aber eine gültige Instanz, wenn du eine Memberfunktion aufrufen willst?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1571865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1571865</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 26 Aug 2008 18:12:26 GMT</pubDate></item></channel></rss>