<?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[Problem mit Zeiger auf Member Funktion]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich versuche in c++ einen Zeiger auf eine Funktion einer instanzierten Klasse zu übergeben und anschließend die Funktion über ihren Zeiger aufzurufen.</p>
<p>Die Übergabe erfolgt in einem template (Kurzfassung des templates):</p>
<pre><code>template&lt;class T&gt;class array_ptr
{
//Funktionen sind hier deklariert
}

//template.cpp
      template&lt;class T&gt; array_ptr&lt;T&gt;::array_ptr(void)
      {
      }

      template&lt;class T&gt; void array_ptr&lt;T&gt;::object_removed(T *elem)
      {
            //tu was...
      }

      template&lt;class T&gt; void array_ptr&lt;T&gt;::add_elem(void)
      {
        //Zeiger wird hier definiert
	void (array_ptr&lt;T&gt;::*callback)(T*);
	callback=&amp;array_ptr::object_removed;  
        //object_removed=Funktionsname einer Funktion der template Klasse

        //und hier wird ein neues Object &lt;T&gt; erzeugt und der Funktionszeiger
        //übergeben
	T*elem=new T(callback);
     }
</code></pre>
<p>Die Übergabe klappt auch, nur der Aufruf in folgender Klasse nicht:</p>
<pre><code>class CMovie_Info : public C_Information
{
//Funktionszeiger
private: void (array_ptr&lt;CMovie_Info&gt;::*callback)(CMovie_Info*);
//Funktionen sind hier deklariert
}

//CMovie_Info.cpp
CMovie_Info::CMovie_Info(void (array_ptr&lt;CMovie_Info&gt;::*callback)(CMovie_Info*))
{
	this-&gt;callback=callback;
}

CMovie_Info::~CMovie_Info(void)
{
	[b]this-&gt;callback(this);[/b]
        [b]//error C2064: Ausdruck ergibt keine Funktion,[/b]
        [b]// die 1 Argumente übernimmt[/b]
         :mad: 

}
</code></pre>
<p>Was mache ich hier falsch, die Funktion hat doch nur das Argument &quot;CMovie_Info*&quot;. Wieso fordert er hier mehr Argumente?</p>
<p>Ich hoffe jemand kann mir helfen, ich sitze schon seit Stunden an diesem Problem.</p>
<p>PS:Ich benutze zum Programmieren Visual Studio 2010</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286795/problem-mit-zeiger-auf-member-funktion</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 17:17:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286795.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 16 May 2011 16:57:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Zeiger auf Member Funktion on Mon, 16 May 2011 16:57:59 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich versuche in c++ einen Zeiger auf eine Funktion einer instanzierten Klasse zu übergeben und anschließend die Funktion über ihren Zeiger aufzurufen.</p>
<p>Die Übergabe erfolgt in einem template (Kurzfassung des templates):</p>
<pre><code>template&lt;class T&gt;class array_ptr
{
//Funktionen sind hier deklariert
}

//template.cpp
      template&lt;class T&gt; array_ptr&lt;T&gt;::array_ptr(void)
      {
      }

      template&lt;class T&gt; void array_ptr&lt;T&gt;::object_removed(T *elem)
      {
            //tu was...
      }

      template&lt;class T&gt; void array_ptr&lt;T&gt;::add_elem(void)
      {
        //Zeiger wird hier definiert
	void (array_ptr&lt;T&gt;::*callback)(T*);
	callback=&amp;array_ptr::object_removed;  
        //object_removed=Funktionsname einer Funktion der template Klasse

        //und hier wird ein neues Object &lt;T&gt; erzeugt und der Funktionszeiger
        //übergeben
	T*elem=new T(callback);
     }
</code></pre>
<p>Die Übergabe klappt auch, nur der Aufruf in folgender Klasse nicht:</p>
<pre><code>class CMovie_Info : public C_Information
{
//Funktionszeiger
private: void (array_ptr&lt;CMovie_Info&gt;::*callback)(CMovie_Info*);
//Funktionen sind hier deklariert
}

//CMovie_Info.cpp
CMovie_Info::CMovie_Info(void (array_ptr&lt;CMovie_Info&gt;::*callback)(CMovie_Info*))
{
	this-&gt;callback=callback;
}

CMovie_Info::~CMovie_Info(void)
{
	[b]this-&gt;callback(this);[/b]
        [b]//error C2064: Ausdruck ergibt keine Funktion,[/b]
        [b]// die 1 Argumente übernimmt[/b]
         :mad: 

}
</code></pre>
<p>Was mache ich hier falsch, die Funktion hat doch nur das Argument &quot;CMovie_Info*&quot;. Wieso fordert er hier mehr Argumente?</p>
<p>Ich hoffe jemand kann mir helfen, ich sitze schon seit Stunden an diesem Problem.</p>
<p>PS:Ich benutze zum Programmieren Visual Studio 2010</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064191</guid><dc:creator><![CDATA[Freuro]]></dc:creator><pubDate>Mon, 16 May 2011 16:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zeiger auf Member Funktion on Mon, 16 May 2011 17:08:24 GMT]]></title><description><![CDATA[<p>Deine Syntax ist falsch. Das müsste, wenn ich mich nicht irre (ich komme da selbst immer durcheinander, <a href="http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.6" rel="nofollow">siehe auch hier</a>), so lauten:</p>
<pre><code class="language-cpp">(this-&gt;*callback)(this);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2064199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064199</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 May 2011 17:08:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zeiger auf Member Funktion on Mon, 16 May 2011 17:18:56 GMT]]></title><description><![CDATA[<p>(this-&gt;*callback)(this); hat leider nicht geholfen der Fehler lautet dann: error C2440: 'newline': 'CMovie_Info *const ' kann nicht in 'array_ptr&lt;T&gt; *const ' konvertiert werden</p>
<p>aber der Link scheint hilfreich zu sein, ich werd mich da mal durcharbeiten, danke für den tipp <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2064206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064206</guid><dc:creator><![CDATA[Freuro]]></dc:creator><pubDate>Mon, 16 May 2011 17:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zeiger auf Member Funktion on Mon, 16 May 2011 17:32:00 GMT]]></title><description><![CDATA[<p>Freuro schrieb:</p>
<blockquote>
<p>(this-&gt;*callback)(this); hat leider nicht geholfen der Fehler lautet dann: error C2440: 'newline': 'CMovie_Info *const ' kann nicht in 'array_ptr&lt;T&gt; *const ' konvertiert werden</p>
<p>aber der Link scheint hilfreich zu sein, ich werd mich da mal durcharbeiten, danke für den tipp <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>
</blockquote>
<p>Ahh, ich sehe jetzt erst, dass callback ein Zeiger auf ein array_ptr&lt;CMovie_Info&gt; ist. Wie willst du das denn mit dem this eines CMovie_Info aufrufen? Das ist doch klar, dass das nicht gehen kann. Du brauchst schon ein array_ptr&lt;CMovie_Info&gt;-Objekt dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2064215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2064215</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 16 May 2011 17:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zeiger auf Member Funktion on Fri, 20 May 2011 10:21:12 GMT]]></title><description><![CDATA[<p>thx @ SeppJ: Der Link hat mir weitergeholfen, klappt jetzt einwandfrei<br />
danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2066251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2066251</guid><dc:creator><![CDATA[Freuroo]]></dc:creator><pubDate>Fri, 20 May 2011 10:21:12 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Zeiger auf Member Funktion on Fri, 20 May 2011 10:22:26 GMT]]></title><description><![CDATA[<p>war nicht eingeloggt</p>
<p>Freuro=Freuroo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2066254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2066254</guid><dc:creator><![CDATA[Freuro]]></dc:creator><pubDate>Fri, 20 May 2011 10:22:26 GMT</pubDate></item></channel></rss>