<?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[Templates]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe folgenden Fehler beim Ausführen des Quellcodes:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;min.h&quot;

using namespace std;

int main(void)
{	
	int min=0;
	int bla[]={5,3,-2,1,8,10,-5,4,7,-14,6,-3,123,56,-46};
	min=MyMin(bla,15);
	cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; bla[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

	float blub[]={1.0,4.6,3.5,4.3,-9.6,10.0,-3.4,1.0,-2,9};
	min=MyMin(blub,8);
	cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; blub[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

	char *scheissendreck[]={&quot;schei&quot;,&quot;sse&quot;,&quot;en&quot;,&quot;dreck!&quot;};
	min=MyMin(scheissendreck,4);
	//cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; blub[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

	return 0;
}
</code></pre>
<p>min.h</p>
<pre><code class="language-cpp">#ifndef BLA
#define BLA

#include &lt;string&gt;

template &lt;class T&gt;
int MyMin(const T* feld ,int const anz)
{
	int min=0;
	for(int i=0; i&lt;anz; i++ )
	{
		if(feld[i]&lt;feld[min])
			min=i;	
	}

	return min;
}
template &lt;&gt;
int MyMin(char** feld, const int anz)
{
	int min=0;
	for(int i=0; i&lt;anz;i++)
	{
		if(strlen(feld[i])&lt;strlen(feld[min]))
		min=i;
	}
	return min;
}

#endif
</code></pre>
<p>Mit den Zahlen funktionert es reibungslos, bloß bei dem Char Arrays muckt es rum und es kommt folgende Fehlermeldung:<br />
**error C2912: Explizite Spezialisierung; 'int MyMin(char <strong>,const int)' ist keine Spezialisierung einer Funktionsvorlage</strong></p>
<p>kann mir jemand sagen, wo mein Fehler liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/203956/templates</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 03:58:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203956.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Jan 2008 15:47:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 15:47:46 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich habe folgenden Fehler beim Ausführen des Quellcodes:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;min.h&quot;

using namespace std;

int main(void)
{	
	int min=0;
	int bla[]={5,3,-2,1,8,10,-5,4,7,-14,6,-3,123,56,-46};
	min=MyMin(bla,15);
	cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; bla[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

	float blub[]={1.0,4.6,3.5,4.3,-9.6,10.0,-3.4,1.0,-2,9};
	min=MyMin(blub,8);
	cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; blub[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

	char *scheissendreck[]={&quot;schei&quot;,&quot;sse&quot;,&quot;en&quot;,&quot;dreck!&quot;};
	min=MyMin(scheissendreck,4);
	//cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; blub[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

	return 0;
}
</code></pre>
<p>min.h</p>
<pre><code class="language-cpp">#ifndef BLA
#define BLA

#include &lt;string&gt;

template &lt;class T&gt;
int MyMin(const T* feld ,int const anz)
{
	int min=0;
	for(int i=0; i&lt;anz; i++ )
	{
		if(feld[i]&lt;feld[min])
			min=i;	
	}

	return min;
}
template &lt;&gt;
int MyMin(char** feld, const int anz)
{
	int min=0;
	for(int i=0; i&lt;anz;i++)
	{
		if(strlen(feld[i])&lt;strlen(feld[min]))
		min=i;
	}
	return min;
}

#endif
</code></pre>
<p>Mit den Zahlen funktionert es reibungslos, bloß bei dem Char Arrays muckt es rum und es kommt folgende Fehlermeldung:<br />
**error C2912: Explizite Spezialisierung; 'int MyMin(char <strong>,const int)' ist keine Spezialisierung einer Funktionsvorlage</strong></p>
<p>kann mir jemand sagen, wo mein Fehler liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445169</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Mon, 28 Jan 2008 15:47:46 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 16:02:06 GMT]]></title><description><![CDATA[<p>Vllt</p>
<pre><code class="language-cpp">int MyMin(char* const* feld, const int anz)
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445176</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Mon, 28 Jan 2008 16:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 16:30:10 GMT]]></title><description><![CDATA[<p>Mal aufräumen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">template &lt;tpyename range_type&gt;
range_type&amp; min_range(const range_type* data, std::size_t size)
{
    assert(size &gt; 0);
    range_type&amp; min(data[0]);
    while (size &gt; 0) 
        if (min &gt; data[--size])
            min = data[size];

    return min;
}
</code></pre>
<p><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/1445187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445187</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 28 Jan 2008 16:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 17:42:12 GMT]]></title><description><![CDATA[<p>Wenn du so machst dann geht es.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
int MyMin(const T feld ,int const anz)
{
    int min=0;
    for(int i=0; i&lt;anz; i++ )
    {
        if(feld[i]&lt;feld[min])
            min=i;   
    }

    return min;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1445216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445216</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Mon, 28 Jan 2008 17:42:12 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:07:06 GMT]]></title><description><![CDATA[<p>ramsis: das template mit den zahlen funktioniert! nur das mit dem zeichenketten funktioniert nicht!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8156">@DeSoVoDaMu</a>:</p>
<p>ich kapier nicht warum das funktioniert!<br />
ist ja komisch!</p>
<pre><code class="language-cpp">char *scheissendreck[]={&quot;schei&quot;,&quot;sse&quot;,&quot;en&quot;,&quot;dreck!&quot;};
</code></pre>
<p>Das ist ein char Zeiger-array von char zeiger.</p>
<pre><code class="language-cpp">int MyMin(char** feld, int const anz)
</code></pre>
<p>Also müsste es ja hier auch zeiger auf zeiger sein um dann mit &quot;feld&quot; auf die elemente zuzugreifen!</p>
<pre><code class="language-cpp">int MyMin(char* const* feld, int const anz)
</code></pre>
<p>Was bedeutet das? einen zeiger auf einen konstanten char?</p>
<p>kapier ich nicht! könntest du das weiter erläutern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445228</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:07:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:17:32 GMT]]></title><description><![CDATA[<p>ah ich verstehe!</p>
<pre><code class="language-cpp">int MyMin(char *const *feld, int const anz)
</code></pre>
<p>das ist ein konstanter char-zeiger auf einen char-zeiger!</p>
<p>aber nun 2 fragen:</p>
<p>1. wieso muss der erste zeiger konstant sein?<br />
2. wieso wird bei</p>
<pre><code class="language-cpp">int MyMin(const char *const *feld, int const anz)
</code></pre>
<p>Position 3 ausgegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445246</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:20:42 GMT]]></title><description><![CDATA[<p>hmm naja dein Problem ist eigtl. nicht ganz nachzuvollziehen. Deine Max und Min-Funktionen würden ja die Zeigervergleichen, nichtaber deren Wert. Das ist doch garnicht gewünscht, d.h. weiß ich nicht warum du das unbedingt haben willst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445249</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:20:42 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:26:58 GMT]]></title><description><![CDATA[<p>Das ist eigentlich eine übungsaufgabe zu templates!</p>
<p>Ich soll aus einem Array, das aus Zahlen besteht, das Minimum bestimmen und die Position bestimmen!</p>
<p>Also habe ich zu erst die erste MyMin Funktionen geschrieben und mit den beiden verschiedenen (float, int) Arrays getestet - hat auch astrein funktioniert.</p>
<p>Nun sollte man noch eine spezifische Funktion implementieren, das aus einem char Array die Position der kürzesten Zeichenkette bestimmt.</p>
<p>Also habe ich die spezifische template Funktion mit &quot;template&lt;&gt;&quot; eingeleitet! Aber leider hat das mit meiner Methode nicht funktioniert.</p>
<p>Deshalb habe ich die Frage hier gestellt.</p>
<p>Also meine Fragen bestehen immernoch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445255</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:28:33 GMT]]></title><description><![CDATA[<p>Wenn man so spezialisiert ohne const<br />
kommt &quot;en&quot; also position 2 heraus.<br />
korekt oder!</p>
<pre><code class="language-cpp">template &lt;&gt;
int MyMin(char** feld, const int anz)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1445256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445256</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:29:02 GMT]]></title><description><![CDATA[<p>Hmm na okay das geht anders <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Template-Spezifizierung, denn du musst da mit std::strlen arbeiten, sonst haut das nicht hin. ptr1 &lt; ptr2 ist nicht das selbe wie length(*ptr1) &lt; length(*ptr2)!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445257</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:29:02 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:45:26 GMT]]></title><description><![CDATA[<blockquote>
<p>ich kapier nicht warum das funktioniert!</p>
</blockquote>
<p>Ich habe mir einfach die template-Deklaration angeschaut.</p>
<pre><code class="language-cpp">int MyMin(const T* feld ,int const anz)
</code></pre>
<p>Das ist quasi ein Zeiger auf ein konstantes T.</p>
<p>Setz ich jetzt fuer T char* ein erhalte ich einen Zeiger auf einen konstanten char-Zeiger -&gt;</p>
<pre><code class="language-cpp">char* const*
</code></pre>
<p>Das fehlende const ist das, was dir der Compiler sagen will, weil dann eben die Spezialisierung nicht mehr zur der Vorlage passt.</p>
<p>Edit:<br />
PS: wenn dir die Zeigersyntax und deren Bedeutung nicht ganz klar ist, schau vielleicht mal <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-284488.html" rel="nofollow">hier</a> rein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445272</guid><dc:creator><![CDATA[DeSoVoDaMu]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:45:26 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 18:44:58 GMT]]></title><description><![CDATA[<p>hä?</p>
<p>ich weiß, dass er bei der ersten funktion nur die zeiger vergleichen würde, deshalb habe ich ja die zweite funktion (unter template&lt;&gt;)</p>
<p>ah verdammt, ich habe using namespace std vergessen, ich depp! nochmal testen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445275</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Mon, 28 Jan 2008 18:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 19:01:12 GMT]]></title><description><![CDATA[<p>hmm..geht auch nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1445287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445287</guid><dc:creator><![CDATA[sheddy]]></dc:creator><pubDate>Mon, 28 Jan 2008 19:01:12 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 28 Jan 2008 19:19:08 GMT]]></title><description><![CDATA[<blockquote>
<p>hmm..geht auch nicht</p>
</blockquote>
<p>was funktioniert nicht?<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

template &lt;class T&gt;
int MyMin(const T feld ,int const anz)
{
    int min=0;
    for(int i=0; i&lt;anz; i++ )
    {
        if(feld[i]&lt;feld[min])
            min=i;   
    }

    return min;
}

template&lt;&gt;
int MyMin(char **const  feld, const int anz)
{
    int min=0;
    for(int i=0; i&lt;anz;i++)
    {
        if(strlen(feld[i])&lt;strlen(feld[min]))
        min=i;
    }
    return min;
} 

int main(void)
{   
    int min=0;
    int bla[]={5,3,-2,1,8,10,-5,4,7,-14,6,-3,123,56,-46};
    min=MyMin(bla,15);
    cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; bla[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

    float blub[]={1.0,4.6,3.5,4.3,-9.6,10.0,-3.4,1.0,-2,9};
    min=MyMin(blub,8);
    cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; blub[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

    char *scheissendreck[]={&quot;schei&quot;,&quot;sse&quot;,&quot;en&quot;,&quot;dreck!&quot;, &quot;pn&quot;, &quot;d&quot;, &quot;az&quot;};
    min=MyMin(scheissendreck,7);
   cout &lt;&lt; &quot;Kleinstes Element ist &quot;&lt;&lt; scheissendreck[min]&lt;&lt; &quot; an Position &quot; &lt;&lt;min&lt;&lt;endl;

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1445303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445303</guid><dc:creator><![CDATA[Ramsis]]></dc:creator><pubDate>Mon, 28 Jan 2008 19:19:08 GMT</pubDate></item></channel></rss>