<?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[Zeiger auf Memberfunktionen]]></title><description><![CDATA[<p>Folgende Ausgangssituation:</p>
<p>Ich habe mehrere unterschiedliche Klassen, in denen es jeweils mehrere Funktionen der selben art gibt &quot;bool funktion(void)&quot;.<br />
Zu Beginn des Programms soll dann festgelegt werden welche Funktionen dann im weiteren Verlauf immer wieder benutzt werden sollen. Dazu existiert ein Array aus Funktionszeigern auf eben jene Art von Funktionen &quot;bool funktion(void)&quot;.</p>
<p>Mein Problem ist allerdings, dass mir nicht klar war, dass man keine Pointer auf Memberfunktionen setzen darf. Bzw., dass man dazu den Typ der Klasse, aus der die Funktion stammt schon vorher definieren muss:<br />
bool (CKlasse1::* newfunc)(void)</p>
<p>Meine Frage jetzt: Wie würdet ihr dieses Problem lösen?</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232767/zeiger-auf-memberfunktionen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 05:07:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232767.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Jan 2009 21:35:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen on Mon, 26 Jan 2009 21:35:59 GMT]]></title><description><![CDATA[<p>Folgende Ausgangssituation:</p>
<p>Ich habe mehrere unterschiedliche Klassen, in denen es jeweils mehrere Funktionen der selben art gibt &quot;bool funktion(void)&quot;.<br />
Zu Beginn des Programms soll dann festgelegt werden welche Funktionen dann im weiteren Verlauf immer wieder benutzt werden sollen. Dazu existiert ein Array aus Funktionszeigern auf eben jene Art von Funktionen &quot;bool funktion(void)&quot;.</p>
<p>Mein Problem ist allerdings, dass mir nicht klar war, dass man keine Pointer auf Memberfunktionen setzen darf. Bzw., dass man dazu den Typ der Klasse, aus der die Funktion stammt schon vorher definieren muss:<br />
bool (CKlasse1::* newfunc)(void)</p>
<p>Meine Frage jetzt: Wie würdet ihr dieses Problem lösen?</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652903</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Mon, 26 Jan 2009 21:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen on Mon, 26 Jan 2009 21:38:52 GMT]]></title><description><![CDATA[<p>kanns leider nicht sagen, wie ich das machen würde. hängt sehr vom rest des programms ab.<br />
vielleicht virtuelle funktionen und bool (Basisklasse::* newfunc)(void)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652905</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 26 Jan 2009 21:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen on Mon, 26 Jan 2009 22:11:03 GMT]]></title><description><![CDATA[<p>Geht das denn, wenn ich die Methoden dann letztlich erst in der abgeleiteten Klasse definiere?</p>
<p>Muss ich dann bei der zuweisung casten?</p>
<pre><code>bool (Basisklasse::* newfunc)(void)
</code></pre>
<pre><code>newfunc = &amp;((Basisklasse)objekt_der_vererbten_klasse).funktion()
</code></pre>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1652918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1652918</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Mon, 26 Jan 2009 22:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen on Tue, 27 Jan 2009 07:26:40 GMT]]></title><description><![CDATA[<p>AceKiller73 schrieb:</p>
<blockquote>
<p>Mein Problem ist allerdings, dass mir nicht klar war, dass man keine Pointer auf Memberfunktionen setzen darf. Bzw., dass man dazu den Typ der Klasse, aus der die Funktion stammt schon vorher definieren muss:<br />
bool (CKlasse1::* newfunc)(void)</p>
</blockquote>
<p>Was nur logisch ist, da man für nicht-statische Memberfunktionen 2 Zeiger benötigt: a) Den der Methode, b) den des Objektes (Das was in der Methode als this bekannt ist).</p>
<p>Eine Lösung sind beispielweise Funktoren (Funktionsobjekte). Dies ist aber auch schon ein komplexeres Thema, ich verweise hier mal auf die Boost-Bibliothek oder den TR1:<br />
* boost::function, std::tr1::function<br />
Üblicherweise in Kombination mit<br />
* boost.:bind, std::tr1::bind</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653020</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 27 Jan 2009 07:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen on Tue, 27 Jan 2009 07:52:12 GMT]]></title><description><![CDATA[<p>Ja auf die Boost libary bin ich auch schon gestoßen. Kam mir alles aber bischen kompliziert vor.</p>
<p>Ich werds mit Polymophie versuchen.</p>
<p>Danke</p>
<p>MFG<br />
Ace</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653037</guid><dc:creator><![CDATA[AceKiller73]]></dc:creator><pubDate>Tue, 27 Jan 2009 07:52:12 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen on Tue, 27 Jan 2009 08:18:15 GMT]]></title><description><![CDATA[<p>AceKiller73 schrieb:</p>
<blockquote>
<p>Ich werds mit Polymophie versuchen.</p>
</blockquote>
<p>Das klappt aber dennoch nur, wenn du die Funktion auf einen konkreten Zeiger auf das Objektes anwendest. Ich hoffe soweit hattest du meinen Post schon gelesen...</p>
<p>P.S: Wenn du MSVC besitzt gibt es für Boost auch einen Installer...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1653054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1653054</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 27 Jan 2009 08:18:15 GMT</pubDate></item></channel></rss>