<?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[virtual static]]></title><description><![CDATA[<p>Hallo...</p>
<p>Ich habe mal wieder ein problem:</p>
<p>Ich habe eine Klasse, die vom Nutzer noch einmal abgeleitet werden soll, der dann eine Funktion angeben (eigtl überschreiben) soll, die threaded gestartet werden soll. Ist ja auch egal warum genau, aber sie muss halt static sein.</p>
<p>(also nicht, dass jz alle wieder anfangen von wegen: threads sind kein C++-Standard - spielt hier eigtl keine Rolle denk ich ^^)</p>
<pre><code class="language-cpp">virtual static
</code></pre>
<p>geht nicht (virtual kann nicht mit static verwendet werden)</p>
<p>Ich könnte natürlich auch jedes mal im ctor nen Funktions-pntr mitübergeben, aber dachte mir, dass es vll eine sinnvollere Lösung gibt, als für jede Instanz der Klasse wieder das Gleiche zu speichern (zu mal es für so was ja static gibt ^^)...</p>
<p>Ich hoffe, dass das gut genau beschrieben ist - falls nicht hier einfach mal in Code-kurz-Form ^^:</p>
<pre><code class="language-cpp">class base_1
    {
        private:
            virtual static unsigned fkt (void *parameter) = 0;
        public:
            void bar (void)
                {
                    //thread erstellen
                }

    }; //geht halt nicht

class base_2
    {
        private:
            (unsigned *) fkt (void *);
        public:
            void bar (void)
                {
                    //thread erstellen
                }

    }; //ist (in meinen Augen) bissl unsinnig
</code></pre>
<p>Danke schon mal <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/topic/216074/virtual-static</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 20:12:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216074.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jun 2008 19:25:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to virtual static on Wed, 18 Jun 2008 19:25:50 GMT]]></title><description><![CDATA[<p>Hallo...</p>
<p>Ich habe mal wieder ein problem:</p>
<p>Ich habe eine Klasse, die vom Nutzer noch einmal abgeleitet werden soll, der dann eine Funktion angeben (eigtl überschreiben) soll, die threaded gestartet werden soll. Ist ja auch egal warum genau, aber sie muss halt static sein.</p>
<p>(also nicht, dass jz alle wieder anfangen von wegen: threads sind kein C++-Standard - spielt hier eigtl keine Rolle denk ich ^^)</p>
<pre><code class="language-cpp">virtual static
</code></pre>
<p>geht nicht (virtual kann nicht mit static verwendet werden)</p>
<p>Ich könnte natürlich auch jedes mal im ctor nen Funktions-pntr mitübergeben, aber dachte mir, dass es vll eine sinnvollere Lösung gibt, als für jede Instanz der Klasse wieder das Gleiche zu speichern (zu mal es für so was ja static gibt ^^)...</p>
<p>Ich hoffe, dass das gut genau beschrieben ist - falls nicht hier einfach mal in Code-kurz-Form ^^:</p>
<pre><code class="language-cpp">class base_1
    {
        private:
            virtual static unsigned fkt (void *parameter) = 0;
        public:
            void bar (void)
                {
                    //thread erstellen
                }

    }; //geht halt nicht

class base_2
    {
        private:
            (unsigned *) fkt (void *);
        public:
            void bar (void)
                {
                    //thread erstellen
                }

    }; //ist (in meinen Augen) bissl unsinnig
</code></pre>
<p>Danke schon mal <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/1531841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531841</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 18 Jun 2008 19:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to virtual static on Wed, 18 Jun 2008 19:41:13 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>Ich habe eine Klasse, die vom Nutzer noch einmal abgeleitet werden soll, der dann eine Funktion angeben (eigtl überschreiben) soll, die threaded gestartet werden soll. Ist ja auch egal warum genau, aber sie muss halt static sein.</p>
</blockquote>
<p>Ich würde mal darauf tippen das dies (static) eine Einschränkung deiner Threadingbibliothek ist. Vielleicht machst du einfach etwas in der folgenden Art:</p>
<pre><code class="language-cpp">class Base
{
  public:
    static void foo(Base* obj)
    {
      if(obj)
        obj-&gt;threadMethode();
    }
  protected:
    virtual void threadMethode() = 0;
};
</code></pre>
<p>Ansonsten bleiben dir tatsächlich nur Funktionszeiger.</p>
<p>Alternativ schau dir die Threadingbibliothek von Boost an, dazu boost::bind und boost::function.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531851</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 Jun 2008 19:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to virtual static on Wed, 18 Jun 2008 21:47:10 GMT]]></title><description><![CDATA[<p>danke</p>
<p>noch mal dazu:</p>
<p>asc schrieb:</p>
<blockquote>
<p>Ich würde mal darauf tippen das dies (static) eine Einschränkung deiner Threadingbibliothek ist.</p>
</blockquote>
<p>Naja - ich find das rel. logisch (nutze die windows-api (_beginthreadex (...) oder so ^^) und die will nun mal ne fkt, die nur ein parameter erwartet: void*). Von daher muss es ja ne static Funktion sein - oder?</p>
<p>asc schrieb:</p>
<blockquote>
<p>Alternativ schau dir die Threadingbibliothek von Boost an, dazu boost::bind und boost::function.</p>
</blockquote>
<p>Bin nich so ein boost-Fan - und wenn mans so einfach selbst schreiben kann seh ich au keinen Grund, andere Bibliotheken zu verwenden...</p>
<p>Aber danke - dann werd ich es wahrscheinlich doch mit Funktions-Pointern machen - wahrscheinlich is das so gar besser als wenn virtual static gehen würde - in meinem Fall zumindest ^^</p>
<p>Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531893</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 18 Jun 2008 21:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to virtual static on Wed, 18 Jun 2008 21:52:34 GMT]]></title><description><![CDATA[<p>Mach es halt wie alle anderen: gibt nen Zeiger auf die Basisklasse als void* Parameter mit, casten den in der Funktion zurück, und ruf darüber die normale virtuelle Funktion auf.</p>
<p><a href="http://www.google.com/search?hl=en&amp;safe=off&amp;q=%22trampoline+function%22+CreateThread" rel="nofollow">http://www.google.com/search?hl=en&amp;safe=off&amp;q=&quot;trampoline+function&quot;+CreateThread</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1531894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1531894</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 18 Jun 2008 21:52:34 GMT</pubDate></item></channel></rss>