<?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 auf Memberfunktion einer anderen Klasse]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Habe ein Problem mit einem Funktionspointer und hoffe Ihr könnt mir helfen. Ich habe eine Klasse in der ein Funktionspointer deklariert ist. Jetzt möchte ich in einer anderen Klasse eine Instanz der ersten Klasse erzeugen und dann den Funktiospointer auf eine Funktion der zweiten klasse zeigen lassen um dann diese funktion aus der ersten klasse aufrufen zu können.</p>
<p>Beispiel ...</p>
<pre><code class="language-cpp">typedef void(*TMeineFunktion)(int); 

class Klasse_1 
{ 
    public : 
        void XYZ(); 
        TMeineFunktion Fkt;      
}; 
void Klasse_1::XYZ() 
{ 
    // Funktion ausführen auf die der Funktionspointer zeigt... 
    if(this-&gt;Fkt!=NULL) 
        this-&gt;Fkt(1); 
} 

class Klasse_2 
{ 
    public : 
        Klasse_2(); 
        Klasse_1* ObjektVonKlasse1; 
        void FunktionA(int); 
}; 
Klasse_2::Klasse_2() 
{    
    // Objekt von Klasse 1 erzeugen 
    this-&gt;ObjektVonKlasse1 = new Klasse_1();      
    // Funktionspointer von Klasse 1 auf Funktion aus Klasse 2 legen 
    this-&gt;ObjektVonKlasse1-&gt;Fkt=this-&gt;FunktionA; 
} 
void Klasse_2::FunktionAA(int); 
{ 
    // mach irgend was 
}
</code></pre>
<p>Das Problem liegt laut Compilerfehler daran dass ich auf den Funktionspointer der Fremdklasse keine eigene Memberfunktion abbilden kann. Wenn ich das Klasse2 Objekt und die Funktion außerhalb einer Klasse deklariere dann gehts. Aber irgend wie muss das doch gehen, Borlands VCL kanns doch auch <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>Wär nett wenn mir jemand einen Tip geben könnte...</p>
<p>Gruß Praxmaster</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/121538/funktionspointer-auf-memberfunktion-einer-anderen-klasse</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 22:43:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/121538.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Sep 2005 18:31:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 18:31:27 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Habe ein Problem mit einem Funktionspointer und hoffe Ihr könnt mir helfen. Ich habe eine Klasse in der ein Funktionspointer deklariert ist. Jetzt möchte ich in einer anderen Klasse eine Instanz der ersten Klasse erzeugen und dann den Funktiospointer auf eine Funktion der zweiten klasse zeigen lassen um dann diese funktion aus der ersten klasse aufrufen zu können.</p>
<p>Beispiel ...</p>
<pre><code class="language-cpp">typedef void(*TMeineFunktion)(int); 

class Klasse_1 
{ 
    public : 
        void XYZ(); 
        TMeineFunktion Fkt;      
}; 
void Klasse_1::XYZ() 
{ 
    // Funktion ausführen auf die der Funktionspointer zeigt... 
    if(this-&gt;Fkt!=NULL) 
        this-&gt;Fkt(1); 
} 

class Klasse_2 
{ 
    public : 
        Klasse_2(); 
        Klasse_1* ObjektVonKlasse1; 
        void FunktionA(int); 
}; 
Klasse_2::Klasse_2() 
{    
    // Objekt von Klasse 1 erzeugen 
    this-&gt;ObjektVonKlasse1 = new Klasse_1();      
    // Funktionspointer von Klasse 1 auf Funktion aus Klasse 2 legen 
    this-&gt;ObjektVonKlasse1-&gt;Fkt=this-&gt;FunktionA; 
} 
void Klasse_2::FunktionAA(int); 
{ 
    // mach irgend was 
}
</code></pre>
<p>Das Problem liegt laut Compilerfehler daran dass ich auf den Funktionspointer der Fremdklasse keine eigene Memberfunktion abbilden kann. Wenn ich das Klasse2 Objekt und die Funktion außerhalb einer Klasse deklariere dann gehts. Aber irgend wie muss das doch gehen, Borlands VCL kanns doch auch <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>Wär nett wenn mir jemand einen Tip geben könnte...</p>
<p>Gruß Praxmaster</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879269</guid><dc:creator><![CDATA[PraxMaster]]></dc:creator><pubDate>Sat, 24 Sep 2005 18:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 19:02:12 GMT]]></title><description><![CDATA[<p>Schau mal in die FAQ, da steht was zu Methodenzeigern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879286</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Sat, 24 Sep 2005 19:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 19:07:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Um diesen Code-Snippet compilieren zu können, muss dein typedef folgendermaßen aussehen:</p>
<pre><code class="language-cpp">typedef void(Klasse_2::*TMeine_Funktion)(int);
</code></pre>
<p>Desweiteren muss die folgende Zeile:</p>
<pre><code class="language-cpp">this-&gt;ObjektVonKlasse1-&gt;Fkt=this-&gt;FunktionA;
</code></pre>
<p>durch</p>
<pre><code class="language-cpp">this-&gt;ObjektVonKlasse1-&gt;Fkt=this-&gt;&amp;Klasse_2::FunktionA;
</code></pre>
<p>ersetzt werden.</p>
<p>Allerdings finde ich dein Design ziemlich strange...</p>
<p>/edit: Sorry, habe mir deinen Code jetzt erst genauer angeschaut. Ich glaube du solltest dir Methoden-Zeiger nochmal anschauen. Diese sind nämlich an ein *objekt* gebunden, weshalb unter anderem die folgende Zeile</p>
<pre><code class="language-cpp">this-&gt;Fkt(1);
</code></pre>
<p>so nicht kompilieren wird....</p>
<p>so long</p>
<p>Caipi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879288</guid><dc:creator><![CDATA[Caipi]]></dc:creator><pubDate>Sat, 24 Sep 2005 19:07:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 19:24:08 GMT]]></title><description><![CDATA[<p>Danke für Eure schnellen Antworten,</p>
<p>Habe gerade die FAQs und Dein Beispiel gelesen. Das Problem ist, dass ich das Typedef so nicht umbauen kann. weil ich die Klasse1 von der Klasse 2 unabhänig lassen möchte, oder ich steh bei Deinem Beispiel auf dem Schlauch. Wenn ich wie gesagt in der main mein objekt instanziere und die funktion nicht member irgend einer klasse ist kann ich die memberfunktion der klasse1 umbiegen..</p>
<p>Hintergrund ist. ich hab mir eine Klasse gebaut die mir mit CreateWindowEx Edit Controls erzeugt, da die Borland VCL Edits kein UniCode können. die Funktionspointer sollen jetzt von den Funktionen meiner Editdie die ich für die div. Windowsnachrichten erstellt habe aufgerufen wenn sie vorher durch die aufrufende Klasse belegt worden sind. Wenn man also meint dem edit noch irgend was im WM_KEYUP oder sonst wo mitgeben zu wollen dann soll man eine Funktion auf die &quot;KeyUpUserProc&quot; legen können die dann von meinem Edit Control aufgerufen wird.</p>
<p>Ich könnte das Typedef jetzt so umbauen</p>
<pre><code class="language-cpp">typedef void (MeinEdit::*TMeineUserProc)(int);
</code></pre>
<p>aber das hilft glaub ich dann nicht weiter oder ,.... es müsste doch aber gehen, dass man an die addresse der memberfunktion des edits die addresse der anwender funktion schreibt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879306</guid><dc:creator><![CDATA[PraxMaster]]></dc:creator><pubDate>Sat, 24 Sep 2005 19:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 19:26:11 GMT]]></title><description><![CDATA[<p>das this-&gt;Fkt(1); in Klasse1 lies sich compilieren und auch ausführen, solange eben die Funktion auf die Fkt zeigt nicht in einer klasse ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879309</guid><dc:creator><![CDATA[PraxMaster]]></dc:creator><pubDate>Sat, 24 Sep 2005 19:26:11 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 21:54:43 GMT]]></title><description><![CDATA[<p>[quote=&quot;phlox81&quot;]Schau mal in die FAQ, da steht was zu Methodenzeigern...[/quote]</p>
<p>was sind das denn für Antworten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879395</guid><dc:creator><![CDATA[Buddy Love]]></dc:creator><pubDate>Sat, 24 Sep 2005 21:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 21:57:51 GMT]]></title><description><![CDATA[<p>[quote=&quot;Caipi&quot;]Hallo,</p>
<p>Um diesen Code-Snippet compilieren zu können, muss dein typedef folgendermaßen aussehen:</p>
<pre><code class="language-cpp">typedef void(Klasse_2::*TMeine_Funktion)(int);
</code></pre>
<p>Desweiteren muss die folgende Zeile:</p>
<pre><code class="language-cpp">this-&gt;ObjektVonKlasse1-&gt;Fkt=this-&gt;FunktionA;
</code></pre>
<p>durch</p>
<pre><code class="language-cpp">this-&gt;ObjektVonKlasse1-&gt;Fkt=this-&gt;&amp;Klasse_2::FunktionA;
</code></pre>
<p>ersetzt werden.</p>
<p>Allerdings finde ich dein Design ziemlich strange...</p>
<p>stimmt,hab zwar noch nicht viel gesehen aber das ist echt strange wie der da dreimal um die Ecke erbt...</p>
<p>/edit: Sorry, habe mir deinen Code jetzt erst genauer angeschaut. Ich glaube du solltest dir Methoden-Zeiger nochmal anschauen. Diese sind nämlich an ein *objekt* gebunden, weshalb unter anderem die folgende Zeile</p>
<pre><code class="language-cpp">this-&gt;Fkt(1);
</code></pre>
<p>so nicht kompilieren wird....</p>
<p>so long</p>
<p>Caipi[/quote]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/879400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879400</guid><dc:creator><![CDATA[Buddy Love]]></dc:creator><pubDate>Sat, 24 Sep 2005 21:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer auf Memberfunktion einer anderen Klasse on Sat, 24 Sep 2005 22:53:54 GMT]]></title><description><![CDATA[<p>Ich erb doch gar nix <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="😉"
    /> und sooo strange ist das jetzt auch wieder nicht, ich will einfach ne funktion aufrufen die von ner anderen klasse festgelegt wird.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/879431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/879431</guid><dc:creator><![CDATA[Prax master]]></dc:creator><pubDate>Sat, 24 Sep 2005 22:53:54 GMT</pubDate></item></channel></rss>