<?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[Funktion als Template-Parameter für Klasse]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bei Funktionstemplate brauch ich mich ja nicht auf eine konkrete Funktionsdeklaration festlegen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void foo(double d){
        std::cout &lt;&lt; &quot;foo: &quot; &lt;&lt; d &lt;&lt; std::endl;
}

void bar(double&amp; d){
        std::cout &lt;&lt; &quot;bar: &quot; &lt;&lt; d &lt;&lt; std::endl;
}

template&lt;class T&gt;
void foobar(T t){
        double d = 0;
        t(d);
}

/*template&lt;class T&gt;
class FooBar{
public:
        void foobar(){
                double d = 0;
                T(d);
        }

};*/

int main(){
        foobar(foo);
        foobar(bar);

/*      Foo&lt;foo&gt; foo;
        foo.foobar();*/

}
</code></pre>
<p>Jetzt würde ich gerne etwas analoges im Klassen-Template verwirklichen<br />
(Hier angedeutet durch auskommentierten Bereiche)</p>
<p>Ich weiß, dass ich einen Funktionszeiger verwenden kann, jedoch muss die<br />
Signatur der Funktion dann genau übereinstimmen.</p>
<p>Gibt es eine Möglichkeit ohne sich auf eine genaue Funktionssignatur festzulegen?</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/288508/funktion-als-template-parameter-für-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 23:00:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/288508.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 18 Jun 2011 08:27:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion als Template-Parameter für Klasse on Sat, 18 Jun 2011 08:27:52 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>bei Funktionstemplate brauch ich mich ja nicht auf eine konkrete Funktionsdeklaration festlegen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void foo(double d){
        std::cout &lt;&lt; &quot;foo: &quot; &lt;&lt; d &lt;&lt; std::endl;
}

void bar(double&amp; d){
        std::cout &lt;&lt; &quot;bar: &quot; &lt;&lt; d &lt;&lt; std::endl;
}

template&lt;class T&gt;
void foobar(T t){
        double d = 0;
        t(d);
}

/*template&lt;class T&gt;
class FooBar{
public:
        void foobar(){
                double d = 0;
                T(d);
        }

};*/

int main(){
        foobar(foo);
        foobar(bar);

/*      Foo&lt;foo&gt; foo;
        foo.foobar();*/

}
</code></pre>
<p>Jetzt würde ich gerne etwas analoges im Klassen-Template verwirklichen<br />
(Hier angedeutet durch auskommentierten Bereiche)</p>
<p>Ich weiß, dass ich einen Funktionszeiger verwenden kann, jedoch muss die<br />
Signatur der Funktion dann genau übereinstimmen.</p>
<p>Gibt es eine Möglichkeit ohne sich auf eine genaue Funktionssignatur festzulegen?</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080019</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sat, 18 Jun 2011 08:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion als Template-Parameter für Klasse on Sat, 18 Jun 2011 08:55:04 GMT]]></title><description><![CDATA[<p>Ist zwar nicht ganz das, was Du haben wolltest...</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

void foo(double d){
        std::cout &lt;&lt; &quot;foo(double): &quot; &lt;&lt; d &lt;&lt; std::endl;
}
void foo(int d){
        std::cout &lt;&lt; &quot;foo(int): &quot; &lt;&lt; d &lt;&lt; std::endl;
}

void bar(double&amp; d){
        std::cout &lt;&lt; &quot;bar(double&amp;): &quot; &lt;&lt; d &lt;&lt; std::endl;
}

template&lt;typename U,void (*T)(U)&gt;
class FooBar
{
public:
    void foobar()
    {
        double d = 0;
        (*T)(d);
    }

};

int main()
{
    FooBar&lt;double,&amp;foo&gt; f1; f1.foobar();
    FooBar&lt;int,&amp;foo&gt; f2; f2.foobar();
    FooBar&lt;double&amp;,&amp;bar&gt; f3; f3.foobar();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2080024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080024</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 18 Jun 2011 08:55:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion als Template-Parameter für Klasse on Sat, 18 Jun 2011 09:01:58 GMT]]></title><description><![CDATA[<p>Danke volkard,</p>
<p>genau so hatte ich es bisher in meinem Code, nur möchte ich jetzt<br />
je nachdem ob es ein 'einfacher' Datentyp ist, ein call-by-reference oder call-by-value als Funktionsparameter zulassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080026</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sat, 18 Jun 2011 09:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion als Template-Parameter für Klasse on Sat, 18 Jun 2011 09:09:28 GMT]]></title><description><![CDATA[<p>Als Kopie übergibt man ja eingebaute Typen, Iteratoren und Funktionsobjekte. Du könntest mit SFINAE auf diese Kriterien prüfen aber das ist wahrscheinlich ein Overkill.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080029</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sat, 18 Jun 2011 09:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion als Template-Parameter für Klasse on Sat, 18 Jun 2011 11:16:46 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Als Kopie übergibt man ja eingebaute Typen, Iteratoren und Funktionsobjekte. Du könntest mit SFINAE auf diese Kriterien prüfen aber das ist wahrscheinlich ein Overkill.</p>
</blockquote>
<p>Gute Idee, allerdings ist das doch nen ziemlicher Overkill...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2080086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2080086</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sat, 18 Jun 2011 11:16:46 GMT</pubDate></item></channel></rss>