<?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[Methoden als globale Funktionszeiger. Wie eleganter?]]></title><description><![CDATA[<p>Ich möchte Klassen Methoden welche globale Funktionszeiger sind. So dass ich diese beim initalisieren meiner Anwendung setzen kann.</p>
<p>Ich habe schon eine Lösung. Würde jedoch gerne etwas eleganteres haben. Z.B. etwas was die VTables benutzt.</p>
<p>Von außen soll es nur einen Klassentypen sein.</p>
<p>Hier mein momentaner code:</p>
<pre><code>class myClass
{
    public:
        static void initFunctionPointer()
        {
            //here we could chose different function pointers
            myDynamicFunction_STATIC_POINTER = &amp;myDynamicFunction_UN_STATIC_FUNCTION1;
        }
        inline void myDynamicFunction(int var){myDynamicFunction_STATIC_POINTER(*this, var);}
    private:
        int internVar;
        static void (*myDynamicFunction_STATIC_POINTER)(myClass &amp;classObj, int var);
        static void myDynamicFunction_UN_STATIC_FUNCTION1(myClass &amp;classObj, int var)
        {
            classObj.internVar = var;
        }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/326167/methoden-als-globale-funktionszeiger-wie-eleganter</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 09:30:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326167.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jun 2014 23:41:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Wed, 04 Jun 2014 23:41:39 GMT]]></title><description><![CDATA[<p>Ich möchte Klassen Methoden welche globale Funktionszeiger sind. So dass ich diese beim initalisieren meiner Anwendung setzen kann.</p>
<p>Ich habe schon eine Lösung. Würde jedoch gerne etwas eleganteres haben. Z.B. etwas was die VTables benutzt.</p>
<p>Von außen soll es nur einen Klassentypen sein.</p>
<p>Hier mein momentaner code:</p>
<pre><code>class myClass
{
    public:
        static void initFunctionPointer()
        {
            //here we could chose different function pointers
            myDynamicFunction_STATIC_POINTER = &amp;myDynamicFunction_UN_STATIC_FUNCTION1;
        }
        inline void myDynamicFunction(int var){myDynamicFunction_STATIC_POINTER(*this, var);}
    private:
        int internVar;
        static void (*myDynamicFunction_STATIC_POINTER)(myClass &amp;classObj, int var);
        static void myDynamicFunction_UN_STATIC_FUNCTION1(myClass &amp;classObj, int var)
        {
            classObj.internVar = var;
        }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2402486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402486</guid><dc:creator><![CDATA[Osbios]]></dc:creator><pubDate>Wed, 04 Jun 2014 23:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Thu, 05 Jun 2014 05:45:07 GMT]]></title><description><![CDATA[<p>Hört sich mach dem strategy desing pattern an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402493</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 05 Jun 2014 05:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Thu, 05 Jun 2014 06:10:06 GMT]]></title><description><![CDATA[<p>Osbios schrieb:</p>
<blockquote>
<p>Ich möchte Klassen Methoden welche globale Funktionszeiger sind.</p>
</blockquote>
<p>Ich verstehe nicht genau was du tun willst. Mit Methoden meinst du bestimmt Klassen-Funktion. Entweder ist eine Funktion teil einer Klasse oder global, beides geht nicht. Und entweder es ist eine Funktion oder ein Funktionszeiger, beides geht nicht. Du kannst einen globalen- oder Klassenfunktionszeiger in einem Klassenobjekt speichern und aufrufen. Du kannst den Funktionszeiger dem Konstruktor geben. Das geht nicht viel eleganter als mit einem Funktionszeiger. Du kannst noch std::function nehmen, ist aber nur leicht andere Syntax für eine schlechtere Implementierung.<br />
&quot;Nur ein Klassentyp von außen&quot; hört sich an, als wolltest du keine Vererbung benutzen. Wenn sich das ändert kriegst du deine VTables, ist aber eher nicht empfehlenswert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402495</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 05 Jun 2014 06:10:06 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Thu, 05 Jun 2014 06:27:21 GMT]]></title><description><![CDATA[<p>Sag lieber, was du genau erreichen willst, nicht wie.</p>
<p>&quot;Zu Beginn der Anwendung initialisieren&quot; impliziert im Weiteren keine globalen Variablen. Tatsächlich hast du mit globalen/statischen Variablen langfristig mehr Probleme, verzichte darauf wann immer möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402497</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 05 Jun 2014 06:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Thu, 05 Jun 2014 08:41:44 GMT]]></title><description><![CDATA[<p>Wenn es um Alternativen zu Funktionszeigern ginge, gäbe es da function objects aka Funktoren, mittels overloading von operator():</p>
<pre><code class="language-cpp">class Functor{
  public:
    B operator() (C c){ ...; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2402511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402511</guid><dc:creator><![CDATA[großbuchstaben]]></dc:creator><pubDate>Thu, 05 Jun 2014 08:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Thu, 05 Jun 2014 16:37:54 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Hört sich mach dem strategy desing pattern an.</p>
</blockquote>
<p>Genau das.<br />
Nur scheint diese implementierung über 3 pointer zu geht.<br />
Mein Beispiel geht nur über den Funktionszeiger selber wenn der compiler inline beachtet.</p>
<p>@nwp3<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@Nexus</a></p>
<p>Mit global meinte ich nur, dass die Klassen-Funktion nach der initalisierung für all Objekte der Klass gleich ist/bleibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402612</guid><dc:creator><![CDATA[Osbios]]></dc:creator><pubDate>Thu, 05 Jun 2014 16:37:54 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden als globale Funktionszeiger. Wie eleganter? on Fri, 06 Jun 2014 07:58:44 GMT]]></title><description><![CDATA[<p>Osbios schrieb:</p>
<blockquote>
<p>Ich möchte Klassen Methoden welche globale Funktionszeiger sind.</p>
</blockquote>
<p>Das geht nur mit statischen Methoden, oder den erwähnten Funktoren (Schau dir hierzu vielleicht einmal std::bind/std::function an).</p>
<p>Osbios schrieb:</p>
<blockquote>
<p>So dass ich diese beim initalisieren meiner Anwendung setzen kann.</p>
</blockquote>
<p>Das geht definitiv nur mit statischen Methoden, es sei den du gibst zur Laufzeit noch das konkrete Objekt mit (Auch das lässt sich mit std::bind durchaus bauen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2402692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2402692</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 06 Jun 2014 07:58:44 GMT</pubDate></item></channel></rss>