<?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 &amp;amp; Singleton]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Problem. Ich habe eine Funktion der ich Funktionszeiger übergeben muss. Dieser Funktion möchte ich aber jetzt einen Zeiger auf eine Methode einer Klasse übergeben, das funktioniert jedoch nur wenn die Methode statisch ist. Da meine Klasse aber so oder so Singleton ist, wollte ich fragen ob es da vielleicht nicht doch noch eine andere Möglchkeit gäbe. Die Singleton existiert ja so oder so nur einmal, da müsste ich ja die Funktionen nicht alle static machen, wenn das mit dem Funktionszeiger irgendwie funktionieren würde.<br />
Gibt es da einen Trick, oder geht das auch nicht?<br />
Ich habe in der FAQ gesehen, dass das evt. mem_fun1_ref gehen könnte. Aber ich hoffe, dass es einen speziellen Trick für Singletons gibt <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/topic/128053/zeiger-auf-memberfunktionen-amp-singleton</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 08:31:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128053.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Nov 2005 21:02:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Tue, 29 Nov 2005 21:02:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein kleines Problem. Ich habe eine Funktion der ich Funktionszeiger übergeben muss. Dieser Funktion möchte ich aber jetzt einen Zeiger auf eine Methode einer Klasse übergeben, das funktioniert jedoch nur wenn die Methode statisch ist. Da meine Klasse aber so oder so Singleton ist, wollte ich fragen ob es da vielleicht nicht doch noch eine andere Möglchkeit gäbe. Die Singleton existiert ja so oder so nur einmal, da müsste ich ja die Funktionen nicht alle static machen, wenn das mit dem Funktionszeiger irgendwie funktionieren würde.<br />
Gibt es da einen Trick, oder geht das auch nicht?<br />
Ich habe in der FAQ gesehen, dass das evt. mem_fun1_ref gehen könnte. Aber ich hoffe, dass es einen speziellen Trick für Singletons gibt <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/930197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930197</guid><dc:creator><![CDATA[lustig]]></dc:creator><pubDate>Tue, 29 Nov 2005 21:02:16 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Tue, 29 Nov 2005 21:06:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>die Binder Der STL oder von Boost geben dir jeweils ein sog. Funktionsobjekt zurück - also mit überaldenen operator(). Das ganze bringt dir aber nichts wenn du einen Funktionspointer brauchst.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930201</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Tue, 29 Nov 2005 21:06:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Tue, 29 Nov 2005 21:11:21 GMT]]></title><description><![CDATA[<p>Ich brauche einen Funktionspointer... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/930205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930205</guid><dc:creator><![CDATA[lustig]]></dc:creator><pubDate>Tue, 29 Nov 2005 21:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Tue, 29 Nov 2005 21:33:10 GMT]]></title><description><![CDATA[<p>Wo genau ist dein Problem?</p>
<pre><code class="language-cpp">[static] void doSomething()
{
  Singleton&amp; s = Singleton::getInstance();
  // ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/930228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930228</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 29 Nov 2005 21:33:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Tue, 29 Nov 2005 21:38:03 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Wo genau ist dein Problem?</p>
<pre><code class="language-cpp">[static] void doSomething()
{
  Singleton&amp; s = Singleton::getInstance();
  // ...
}
</code></pre>
</blockquote>
<p>Ich seh hier keinen Methoden-Pointer?</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930232</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Tue, 29 Nov 2005 21:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Tue, 29 Nov 2005 21:54:49 GMT]]></title><description><![CDATA[<p>SideWinder schrieb:</p>
<blockquote>
<p>Ich seh hier keinen Methoden-Pointer?</p>
</blockquote>
<p>Wundert mich kaum. Ich sehe auch keinen.</p>
<p>Edit: Sieht aber auch nicht so aus als ob lustig unbedingt einen braucht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930239</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 29 Nov 2005 21:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Wed, 30 Nov 2005 07:14:46 GMT]]></title><description><![CDATA[<p>finix schrieb:</p>
<blockquote>
<p>Wo genau ist dein Problem?</p>
<pre><code class="language-cpp">[static] void doSomething()
{
  Singleton&amp; s = Singleton::getInstance();
  // ...
}
</code></pre>
</blockquote>
<p>Kann ich theoretisch schon so machen, aber ich dachte es gaebe einen eleganteren Weg, als fuer jede Methode der Singleton eine neue Funktion zu schreiben. Diese Funktion wuerde ja nichts anderes tun, als die entsprechende Methode der Singleton auf zu rufen. Es wäre viel schöner, wenn ich die Methode direkt uebergeben könnte anstatt auf so einem Umweg... <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/930312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930312</guid><dc:creator><![CDATA[lustig]]></dc:creator><pubDate>Wed, 30 Nov 2005 07:14:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Wed, 30 Nov 2005 08:56:46 GMT]]></title><description><![CDATA[<p>Hmm, ich bin meinem Ziel ein kleines Stueck naeher gekommen. Ich kann eine statische Funktion definieren und die als Funktionspointer uebergeben. In dieser statischen Funktion kann ich dann ueber eine weitere Instanz der Singleton auch auf nicht statische Variablen zugreifen:</p>
<pre><code class="language-cpp">[static] void singleton::test()
{
  singleton *pSingleton=singleton::getInstance();
  //durch pSingleton kann ich jetzt auch auf nicht statische
  //Elemente zugreifen...
}
</code></pre>
<p>aber es gefaellt mir auch nicht so wirklich. Es gibt doch sicher einen schoeneren und direkteren Weg...</p>
<p>P.S. Sorry, aber ich habe auf dieser Tastatur im Moment keine Umlaute <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/930335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930335</guid><dc:creator><![CDATA[lustig]]></dc:creator><pubDate>Wed, 30 Nov 2005 08:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Zeiger auf Memberfunktionen &amp;amp; Singleton on Wed, 30 Nov 2005 09:43:13 GMT]]></title><description><![CDATA[<p>Mit einer Template-Funktion kannst Du die Erzeugung einer Funktion generalisieren:</p>
<pre><code>#include &lt;iostream&gt; 

template &lt;typename singletonType, void (singletonType::*memFunc)()&gt;
void singletonFunction()
{
  singletonType* instance = singletonType::getInstance();
  (instance-&gt;*memFunc)();
}

class MySingleton
{
    static MySingleton instance;
    MySingleton() { }
    MySingleton(const MySingleton&amp;);
    MySingleton operator= (const MySingleton&amp;);
  public:
    static MySingleton* getInstance()  { return &amp;instance; }
    void aFunction()  { std::cout &lt;&lt; &quot;aFunction called&quot; &lt;&lt; std::endl; }
};

MySingleton MySingleton::instance;

// hier wird ein Zeiger auf eine Funktion benötigt
void callFunction(void (*func)())
{
  func();
}

int main()
{
  // hier wird mit dem Template eine Funktion instantiiert
  callFunction(singletonFunction&lt;MySingleton, &amp;MySingleton::aFunction&gt;);
}
</code></pre>
<p>Tommi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/930373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/930373</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 30 Nov 2005 09:43:13 GMT</pubDate></item></channel></rss>