<?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 in Template später bestimmen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich habe folgende Nachfrage. Ich möchte mir einen Algorithmus schreiben,<br />
der je nach Datentyp, der übergeben wird noch zusätzlich etwas ausführen soll.<br />
Ich verdeutliche das einfach mal mit einer init-Funktion:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt;
void init(T&amp; t){
        std::cout &lt;&lt; &quot;no init&quot; &lt;&lt; std::endl;
}

template &lt;typename T&gt;
void doSomething(T&amp; t){
        init(t);
        // do some further stuff
}

class A{

};

void init(A&amp; t){
        std::cout &lt;&lt; &quot;init my A object&quot; &lt;&lt; std::endl;
}

int main(){
        A a;
        doSomething(a);
        return 0;
}
</code></pre>
<p>Die Ausgabe ist</p>
<blockquote>
<p>init my A object</p>
</blockquote>
<p>Wenn ich das gleiche für std::string mache:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

template&lt;typename T&gt;
void init(T&amp; t){
        std::cout &lt;&lt; &quot;no init&quot; &lt;&lt; std::endl;
}

template &lt;typename T&gt;
void doSomething(T&amp; t){
        init(t);
        // do some further stuff
}

void init(std::string&amp; t){
        std::cout &lt;&lt; &quot;init my string&quot; &lt;&lt; std::endl;
}

int main(){
        std::string a(&quot;test&quot;);
        doSomething(a);
        return 0;
}
</code></pre>
<p>Lautet meine Ausgabe:</p>
<blockquote>
<p>no init</p>
</blockquote>
<p>Kann mir jemand erklären warum?</p>
<p>Sobald ich die Funktion</p>
<pre><code class="language-cpp">void init(std::string&amp; t);
</code></pre>
<p>vor</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void doSomething(T&amp; t)
</code></pre>
<p>deklariere, ist die Ausgabe:</p>
<blockquote>
<p>init my string</p>
</blockquote>
<p>Warum muss ich die Funktion im ersten Fall nicht vorher deklarieren und<br />
bei std::string doch?</p>
<p>EDIT: i686-apple-darwin10-g++-4.2.1</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269645/funktion-in-template-später-bestimmen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 00:19:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269645.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Jun 2010 20:25:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Mon, 28 Jun 2010 20:27:03 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich habe folgende Nachfrage. Ich möchte mir einen Algorithmus schreiben,<br />
der je nach Datentyp, der übergeben wird noch zusätzlich etwas ausführen soll.<br />
Ich verdeutliche das einfach mal mit einer init-Funktion:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt;
void init(T&amp; t){
        std::cout &lt;&lt; &quot;no init&quot; &lt;&lt; std::endl;
}

template &lt;typename T&gt;
void doSomething(T&amp; t){
        init(t);
        // do some further stuff
}

class A{

};

void init(A&amp; t){
        std::cout &lt;&lt; &quot;init my A object&quot; &lt;&lt; std::endl;
}

int main(){
        A a;
        doSomething(a);
        return 0;
}
</code></pre>
<p>Die Ausgabe ist</p>
<blockquote>
<p>init my A object</p>
</blockquote>
<p>Wenn ich das gleiche für std::string mache:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

template&lt;typename T&gt;
void init(T&amp; t){
        std::cout &lt;&lt; &quot;no init&quot; &lt;&lt; std::endl;
}

template &lt;typename T&gt;
void doSomething(T&amp; t){
        init(t);
        // do some further stuff
}

void init(std::string&amp; t){
        std::cout &lt;&lt; &quot;init my string&quot; &lt;&lt; std::endl;
}

int main(){
        std::string a(&quot;test&quot;);
        doSomething(a);
        return 0;
}
</code></pre>
<p>Lautet meine Ausgabe:</p>
<blockquote>
<p>no init</p>
</blockquote>
<p>Kann mir jemand erklären warum?</p>
<p>Sobald ich die Funktion</p>
<pre><code class="language-cpp">void init(std::string&amp; t);
</code></pre>
<p>vor</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void doSomething(T&amp; t)
</code></pre>
<p>deklariere, ist die Ausgabe:</p>
<blockquote>
<p>init my string</p>
</blockquote>
<p>Warum muss ich die Funktion im ersten Fall nicht vorher deklarieren und<br />
bei std::string doch?</p>
<p>EDIT: i686-apple-darwin10-g++-4.2.1</p>
<p>Gruß,<br />
CSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918623</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 28 Jun 2010 20:27:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Tue, 29 Jun 2010 19:36:23 GMT]]></title><description><![CDATA[<p>Da bisher noch keine Antwort kam, frag ich mal vorsichtig:</p>
<p>Mit vorheriger Deklaration ist aber die korrekte Wahl der Funktion garantiert, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919077</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 29 Jun 2010 19:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Tue, 29 Jun 2010 19:57:02 GMT]]></title><description><![CDATA[<p>Dein Compiler hat wohl in den sauren Apfel gebissen. Hab greade dein Code in VS2008 und 2010 getest und die Ausgabe ist.</p>
<blockquote>
<p>init my string</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1919088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919088</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Tue, 29 Jun 2010 19:57:02 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Tue, 29 Jun 2010 19:58:49 GMT]]></title><description><![CDATA[<p>Liegt wohl am User.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919089</guid><dc:creator><![CDATA[asss]]></dc:creator><pubDate>Tue, 29 Jun 2010 19:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Tue, 29 Jun 2010 20:18:19 GMT]]></title><description><![CDATA[<p>Zeus schrieb:</p>
<blockquote>
<p>Dein Compiler hat wohl in den sauren Apfel gebissen. Hab greade dein Code in VS2008 und 2010 getest und die Ausgabe ist.</p>
<blockquote>
<p>init my string</p>
</blockquote>
</blockquote>
<p>argh...<br />
Das macht mich noch skeptischer ^^<br />
Danke dir!</p>
<p>asss schrieb:</p>
<blockquote>
<p>Liegt wohl am User.</p>
</blockquote>
<p>Aaah...<br />
Dann sagt er bei dir wohl immer</p>
<blockquote>
<p>no init</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919098</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 29 Jun 2010 20:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Tue, 29 Jun 2010 20:37:17 GMT]]></title><description><![CDATA[<p>Der gcc in der Version 4.0.1 liefert noch</p>
<blockquote>
<p>init my string</p>
</blockquote>
<p>Die Versionen 4.2.1, 4.3.5 und 4.4.4 liefen</p>
<blockquote>
<p>no init</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1919104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919104</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 29 Jun 2010 20:37:17 GMT</pubDate></item><item><title><![CDATA[Reply to Funktion in Template später bestimmen on Tue, 29 Jun 2010 20:49:11 GMT]]></title><description><![CDATA[<p>Ich kann mal meine VM anschmeissen und ein Linux GCC nutzen.</p>
<p>Ausgabe ist:</p>
<blockquote>
<p>no init</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1919105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919105</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Tue, 29 Jun 2010 20:49:11 GMT</pubDate></item></channel></rss>