<?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 Objektmethode übergeben...?]]></title><description><![CDATA[<p>Hallo,<br />
ich habe schon die Suche bemüht, aber es klappt so nicht und ich sehe vielleicht den Wald vor lauter Bäumen nicht...jedenfalls bin ich jetzt vor lauter * und &amp; ziemlich durcheinander. Vielleicht kann mir ja jemand den entscheidenden Hinweis geben:</p>
<p>**Wie übergebe ich einen Zeiger auf eine Objektmethode?<br />
**<br />
Ich rufe glutDisplayFunc(void (*func)(void)) auf.<br />
Die zu übergebene *func steckt aber in einem Objekt &quot;test&quot;: test.display();</p>
<p>Alle Varianten, die ich mir so logisch vorstellen konnte, haben nicht geklappt.<br />
z.B.</p>
<pre><code class="language-cpp">&amp;test::display, *test::display, &amp;test.display, *test.display
</code></pre>
<p>Man merkt wohl, dass ich mit diesem ganzen gezeigere und refenrenze noch etwas wacklig bin... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Wie denn nu?<br />
Danke scho'mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152653/zeiger-auf-objektmethode-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 00:48:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152653.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 08 Jul 2006 11:01:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:02:25 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe schon die Suche bemüht, aber es klappt so nicht und ich sehe vielleicht den Wald vor lauter Bäumen nicht...jedenfalls bin ich jetzt vor lauter * und &amp; ziemlich durcheinander. Vielleicht kann mir ja jemand den entscheidenden Hinweis geben:</p>
<p>**Wie übergebe ich einen Zeiger auf eine Objektmethode?<br />
**<br />
Ich rufe glutDisplayFunc(void (*func)(void)) auf.<br />
Die zu übergebene *func steckt aber in einem Objekt &quot;test&quot;: test.display();</p>
<p>Alle Varianten, die ich mir so logisch vorstellen konnte, haben nicht geklappt.<br />
z.B.</p>
<pre><code class="language-cpp">&amp;test::display, *test::display, &amp;test.display, *test.display
</code></pre>
<p>Man merkt wohl, dass ich mit diesem ganzen gezeigere und refenrenze noch etwas wacklig bin... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Wie denn nu?<br />
Danke scho'mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093800</guid><dc:creator><![CDATA[weisseruebe]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:06:51 GMT]]></title><description><![CDATA[<p>Gar nicht. Muss ne statische Memberfunktion sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093806</guid><dc:creator><![CDATA[lösung]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:06:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:11:30 GMT]]></title><description><![CDATA[<p>Manno <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Danke Dir, das ging ja fix. Das hatte ich ein wenig &quot;befürchtet&quot;...<br />
Naja, ich verpacke den Aufruf jetzt erstmal in eine statische Funktion und mach das später schön...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093810</guid><dc:creator><![CDATA[weisseruebe]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:11:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:12:48 GMT]]></title><description><![CDATA[<p>Was willst du genau machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093813</guid><dc:creator><![CDATA[Gegenfrage]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:24:21 GMT]]></title><description><![CDATA[<p>Du musst zusätzlich noch einen Zeiger auf die bestimmte Instanz übergeben.<br />
Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct Widget
{
    void Foo() { std::cout &lt;&lt; &quot;Hallo!&quot;; }
};

void Bar(Widget* w, void (Widget::*f)())
{
    (w-&gt;*f)();
}

int main()
{
    Widget w;
    Bar(&amp;w, &amp;Widget::Foo);
}
</code></pre>
<p>Oder auch mit boost:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/function.hpp&gt;

struct Widget
{
    void Foo() { std::cout &lt;&lt; &quot;Hallo!&quot;; }
};

void Bar(Widget* w, boost::function&lt;void (Widget*)&gt; f)
{
    f(w);
}

int main()
{
    Widget w;
    Bar(&amp;w, &amp;Widget::Foo);
}
</code></pre>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093830</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:24:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:36:08 GMT]]></title><description><![CDATA[<p>weisseruebe schrieb:</p>
<blockquote>
<p>Manno <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Danke Dir, das ging ja fix. Das hatte ich ein wenig &quot;befürchtet&quot;...<br />
Naja, ich verpacke den Aufruf jetzt erstmal in eine statische Funktion und mach das später schön...</p>
</blockquote>
<p>Ich denke nicht das man da noch was schön machen kann. glutDisplayFunc ist dafür zu beschränkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093838</guid><dc:creator><![CDATA[lösung]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:36:08 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:42:10 GMT]]></title><description><![CDATA[<p>Ui...</p>
<p>Na ich bastel gerade mit OpenGL rum und will das ganze halt objektorientiert machen (und dabei gleich C++ lernen)<br />
Das Grundprinzip der oo kenne ich an sich schon ganz gut dank Java.</p>
<p>Konkret möchte ich bei der fertigen glutDisplayFunc halt einen Zeiger auf die Methode Display im Objekt test übergeben.<br />
Aber woran sehe ich, dass *func da statisch sein muss?<br />
Kann das glutDisplayFunc nicht egal sein?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093842</guid><dc:creator><![CDATA[weisseruebe]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:42:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:44:34 GMT]]></title><description><![CDATA[<p>lösung schrieb:</p>
<blockquote>
<p>Ich denke nicht das man da noch was schön machen kann. glutDisplayFunc ist dafür zu beschränkt.</p>
</blockquote>
<p>Na ich muss ja nur die Klasse des Objektes test so basteln, dass die beiden Methoden static sind.<br />
Das ist mir jetzt aber gerade etwas viel, zumal noch ne Menge anderes fertig werden muss. Aber ich will es halt auf lange Sicht richtig verinnerlichen und nicht nur zum Laufen bringen...also auch einen sauberen Weg gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093845</guid><dc:creator><![CDATA[weisseruebe]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:44:34 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Objektmethode übergeben...? on Sat, 08 Jul 2006 11:45:01 GMT]]></title><description><![CDATA[<p>weisseruebe schrieb:</p>
<blockquote>
<p>Ui...</p>
<p>Na ich bastel gerade mit OpenGL rum und will das ganze halt objektorientiert machen (und dabei gleich C++ lernen)<br />
Das Grundprinzip der oo kenne ich an sich schon ganz gut dank Java.</p>
<p>Konkret möchte ich bei der fertigen glutDisplayFunc halt einen Zeiger auf die Methode Display im Objekt test übergeben.<br />
Aber woran sehe ich, dass *func da statisch sein muss?<br />
Kann das glutDisplayFunc nicht egal sein?</p>
</blockquote>
<p>Nein, denn es wird nicht für jedes Object eine neue Funktion im Speicher angelegt. Also wäre eine Adresse von a.func() und b.func() die gleiche. Das einzige was sich verändert, ist ein &quot;unsichtbarer&quot; parameter, der einen zeiger auf die entsprechende instanz also a oder b, beinhaltet.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1093846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1093846</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sat, 08 Jul 2006 11:45:01 GMT</pubDate></item></channel></rss>