<?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[void als template-parameter ungültig?]]></title><description><![CDATA[<p>hallo</p>
<p>ich hab mir frei nach <a href="http://www.newty.de/fpt/functor.html#functors" rel="nofollow">http://www.newty.de/fpt/functor.html#functors</a><br />
einen allgemeinen functor gebastelt</p>
<pre><code class="language-cpp">template&lt; class TClass, typename TReturn, typename TArg&gt;
class Functor
{
    public:
        typedef TReturn TClass::*Fpt(TArg);

        Functor( TClass* object, Fpt methode )
        {
            m_object = object;
            m_methode = methode;
        }

        TReturn operator()( TArg arg )
        {
            return (*m_object.*m_methode)( arg );
        }

    private:
        TClass* m_object;
        Fpt m_methode;
};
</code></pre>
<p>instanzierung so</p>
<pre><code class="language-cpp">class ClassA
{
public:
    ClassB Methode1(int i) {...}
//...
};
ClassA a;
Functor&lt;ClassA, ClassB, int&gt; func( &amp;a, &amp;ClassA::Methode1 );
func();
</code></pre>
<p>aber das geht nicht <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>kann mir jemand helfen?<br />
danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/202287/void-als-template-parameter-ungültig</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 14:09:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202287.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jan 2008 16:39:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void als template-parameter ungültig? on Wed, 09 Jan 2008 16:39:50 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>ich hab mir frei nach <a href="http://www.newty.de/fpt/functor.html#functors" rel="nofollow">http://www.newty.de/fpt/functor.html#functors</a><br />
einen allgemeinen functor gebastelt</p>
<pre><code class="language-cpp">template&lt; class TClass, typename TReturn, typename TArg&gt;
class Functor
{
    public:
        typedef TReturn TClass::*Fpt(TArg);

        Functor( TClass* object, Fpt methode )
        {
            m_object = object;
            m_methode = methode;
        }

        TReturn operator()( TArg arg )
        {
            return (*m_object.*m_methode)( arg );
        }

    private:
        TClass* m_object;
        Fpt m_methode;
};
</code></pre>
<p>instanzierung so</p>
<pre><code class="language-cpp">class ClassA
{
public:
    ClassB Methode1(int i) {...}
//...
};
ClassA a;
Functor&lt;ClassA, ClassB, int&gt; func( &amp;a, &amp;ClassA::Methode1 );
func();
</code></pre>
<p>aber das geht nicht <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>kann mir jemand helfen?<br />
danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433801</guid><dc:creator><![CDATA[typename]]></dc:creator><pubDate>Wed, 09 Jan 2008 16:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Thu, 10 Jan 2008 12:05:25 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>EDIT:*Achtung: Hab in dieser Post nur Mist geschrieben <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="🙂"
    /> Bitte nicht merken!*</p>
<p>void kann nicht als Template-Parameter uebergeben werden. Nie. (void* schon)</p>
<p>Um den Functor auch mit Member Functions ohne Rueckgabewert nutzen zu koennen, musst du ganz einfach eine zweite Version deines Funktors deklarieren, in der du TReturn weglaesst und ueberall void im Code dafuer einsetzt. Ungefaehr so:</p>
<pre><code class="language-cpp">template&lt; class TClass, typename TArg&gt;
class Functor
{
    public:
        typedef void TClass::*Fpt(TArg);

        Functor( TClass* object, Fpt methode )
        {
            m_object = object;
            m_methode = methode;
        }

        TReturn operator()( TArg arg )
        {
            (*m_object.*m_methode)( arg );
        }

    private:
        TClass* m_object;
        Fpt m_methode;
};
</code></pre>
<p>Du kannst auch mal in den Code der Boost.Function adapters reinschauen <a href="http://www.boost.org/doc/html/function.html" rel="nofollow">http://www.boost.org/doc/html/function.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433820</guid><dc:creator><![CDATA[Kohma]]></dc:creator><pubDate>Thu, 10 Jan 2008 12:05:25 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Wed, 09 Jan 2008 17:48:30 GMT]]></title><description><![CDATA[<p>ah, ein grund, funktionen nicht als <code>void foo (void)</code> zu deklarieren.<br />
void kann sehr wohl template-parameter sein, nur eben nicht funktions parameter, außer in der oben genannten art und weise.</p>
<pre><code class="language-cpp">//das funktioniert
template &lt;class X&gt;
class Bar
{
   typedef int (Foo::*FooPtr) (X);
};

template &lt;&gt;
class Bar&lt;void&gt;
{
   typedef int (Foo::*FooPtr) (void);
};

template class Bar&lt;void&gt;;

//aber das nicht:
template &lt;class X&gt;
class Quux
{
   typedef int (Foo::*FooPtr) (X);
};

template class Quux&lt;void&gt;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433842</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 09 Jan 2008 17:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Wed, 09 Jan 2008 18:58:58 GMT]]></title><description><![CDATA[<p>typename schrieb:</p>
<blockquote>
<p>aber das geht nicht <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>
</blockquote>
<p>Meine Glaskugel erzählt mir, dass in diesem Fall &quot;geht nicht&quot; gleichbedeutend ist mit einer Compilermeldung á la</p>
<pre><code>Missing parameter to Functor&lt;typename1_, typename2_, typename3_&gt;::operator()(typename3_) [with typename1_ = ClassA, typename2_ = ClassB, typename3_ = int]
</code></pre>
<p>oder so ähnlich. Du hast deinen functor-operator() so definiert dass er einen Parameter vom Typ TArg (in diesem Falle int) nimmt, hast ihm aber keinen gegeben. Versuchs mal mit func(4) oder sowas nettem...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433874</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 09 Jan 2008 18:58:58 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Wed, 09 Jan 2008 21:25:19 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14600">@queer_boy</a><br />
Stimmt, ich verneige mich <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="🙂"
    /> Ich hatte schonmal aehnlichen Code und aehnliche Probleme und hab einfach ganz boese verallgemeinert. Danke fuer die Richtigstellung.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a><br />
Ich glaube der Code war nur examplarisch gezeigt um zu verdeutlichen was typename gerade macht. Ich glaube nicht, dass er die Parameter vergessen hat. Er hat in seinem Code auch kein void als Template-Parameter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433985</guid><dc:creator><![CDATA[Kohma]]></dc:creator><pubDate>Wed, 09 Jan 2008 21:25:19 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Thu, 10 Jan 2008 12:55:04 GMT]]></title><description><![CDATA[<p>danke erstmal</p>
<p>der code oben will sowieso nicht funktionieren, auch wenn ich mit int und func(4) mache.<br />
die fehlermeldung war etwa &quot;undefined reference to local function&quot; oder so.<br />
mit void hiess es: &quot;ungültiger parameter: void&quot;</p>
<p>habs jetzt wieder gelöscht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434257</guid><dc:creator><![CDATA[typename]]></dc:creator><pubDate>Thu, 10 Jan 2008 12:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Thu, 10 Jan 2008 12:56:29 GMT]]></title><description><![CDATA[<p>sry hab was vergessen<br />
in diese zeile springt der cursor:</p>
<pre><code class="language-cpp">return (*m_object.*m_methode)( arg );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1434259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434259</guid><dc:creator><![CDATA[typename]]></dc:creator><pubDate>Thu, 10 Jan 2008 12:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Thu, 10 Jan 2008 13:27:51 GMT]]></title><description><![CDATA[<p>Naja, dann ueberleg doch mal was da steht, wenn TArg void ist:</p>
<pre><code class="language-cpp">TReturn operator()( void arg )  //eine void-variable names arg O.O ...
        {
            (*m_object.*m_methode)( arg ); //wird hier an die methode uebergeben, die keine Parameter erwartet - das kann nicht gutgehn
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1434272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434272</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 10 Jan 2008 13:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to void als template-parameter ungültig? on Thu, 10 Jan 2008 15:22:12 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>eine void-variable names arg O.O ...<br />
wird hier an die methode uebergeben, die keine Parameter erwartet - das kann nicht gutgehn</p>
</blockquote>
<p>stimmt<br />
dann müsst ich ne dummy klasse machen. ich vergess es wieder.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434382</guid><dc:creator><![CDATA[typename]]></dc:creator><pubDate>Thu, 10 Jan 2008 15:22:12 GMT</pubDate></item></channel></rss>