<?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[Templateproblem]]></title><description><![CDATA[<p>Bei dem Code hier:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;sort.hpp&quot;

int main()
{
    int field[10]={10,2,1,5,4,8,12,11,16,14};
    sort&lt;int&gt; sortieren;
    sortieren.sortArray(field,10);

	return 0;
}
</code></pre>
<p>sort.hpp</p>
<pre><code class="language-cpp">#ifndef SORT_HPP_INCLUDED
#define SORT_HPP_INCLUDED

template &lt;class T&gt;
class sort
{
    public:
    sort();
    ~sort();
    void sortArray(T *array,size_t length);
    void swap(T &amp;a,T &amp;b);

    private:

};

template &lt;class T&gt;
sort&lt;T&gt;::sort()
{

}

template &lt;class T&gt;
sort&lt;T&gt;::~sort()
{

}

template &lt;class T&gt;
void sort&lt;T&gt;::sortArray(T *array,size_t length)
{
    T tradeoff;
    for (int i=0;i&lt;length-1;i++)
    {
        tradeoff=i;
        for (int j=0;j&lt;length-i;j++)
        {
            if (array[tradeoff]&gt;array[j])
            {
                swap(array[tradeoff],array[j]);
            }
        }
    }

}

template &lt;class T&gt;
void sort&lt;T&gt;::swap(T &amp;a,T &amp;b)
{
    T temp=a;
    a=b;
    b=temp;
}

#endif // SORT_HPP_INCLUDED
</code></pre>
<p>kommt folgender Error:</p>
<blockquote>
<p>-------------- Build: Debug in sort_find ---------------<br />
Compiling: main.cpp<br />
sort.hpp: In member function `void sort&lt;T&gt;::sortArray(T*, size_t) [with T = int]':<br />
main.cpp:9: instantiated from here<br />
sort.hpp:33: warning: comparison between signed and unsigned integer expressions<br />
sort.hpp:36: warning: comparison between signed and unsigned integer expressions<br />
Linking console executable: .\sort_find.exe<br />
Process terminated with status 0 (0 minutes, 0 seconds)<br />
1 errors, 2 warnings</p>
</blockquote>
<p>Warum kommt da &quot;instatiated from here&quot;??? Bzw. was soll das bedeuten? Dem passt irgendwas nicht an &quot;T tradeoff&quot; (sort.hpp\Zeile 32), schätz ich mal?<br />
Aber warum nicht? Was passt da nicht?<br />
Kann mir jemand helfen? Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178853/templateproblem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 02:58:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178853.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 15 Apr 2007 20:25:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templateproblem on Sun, 15 Apr 2007 20:25:44 GMT]]></title><description><![CDATA[<p>Bei dem Code hier:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;sort.hpp&quot;

int main()
{
    int field[10]={10,2,1,5,4,8,12,11,16,14};
    sort&lt;int&gt; sortieren;
    sortieren.sortArray(field,10);

	return 0;
}
</code></pre>
<p>sort.hpp</p>
<pre><code class="language-cpp">#ifndef SORT_HPP_INCLUDED
#define SORT_HPP_INCLUDED

template &lt;class T&gt;
class sort
{
    public:
    sort();
    ~sort();
    void sortArray(T *array,size_t length);
    void swap(T &amp;a,T &amp;b);

    private:

};

template &lt;class T&gt;
sort&lt;T&gt;::sort()
{

}

template &lt;class T&gt;
sort&lt;T&gt;::~sort()
{

}

template &lt;class T&gt;
void sort&lt;T&gt;::sortArray(T *array,size_t length)
{
    T tradeoff;
    for (int i=0;i&lt;length-1;i++)
    {
        tradeoff=i;
        for (int j=0;j&lt;length-i;j++)
        {
            if (array[tradeoff]&gt;array[j])
            {
                swap(array[tradeoff],array[j]);
            }
        }
    }

}

template &lt;class T&gt;
void sort&lt;T&gt;::swap(T &amp;a,T &amp;b)
{
    T temp=a;
    a=b;
    b=temp;
}

#endif // SORT_HPP_INCLUDED
</code></pre>
<p>kommt folgender Error:</p>
<blockquote>
<p>-------------- Build: Debug in sort_find ---------------<br />
Compiling: main.cpp<br />
sort.hpp: In member function `void sort&lt;T&gt;::sortArray(T*, size_t) [with T = int]':<br />
main.cpp:9: instantiated from here<br />
sort.hpp:33: warning: comparison between signed and unsigned integer expressions<br />
sort.hpp:36: warning: comparison between signed and unsigned integer expressions<br />
Linking console executable: .\sort_find.exe<br />
Process terminated with status 0 (0 minutes, 0 seconds)<br />
1 errors, 2 warnings</p>
</blockquote>
<p>Warum kommt da &quot;instatiated from here&quot;??? Bzw. was soll das bedeuten? Dem passt irgendwas nicht an &quot;T tradeoff&quot; (sort.hpp\Zeile 32), schätz ich mal?<br />
Aber warum nicht? Was passt da nicht?<br />
Kann mir jemand helfen? Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1266765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1266765</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Sun, 15 Apr 2007 20:25:44 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Sun, 15 Apr 2007 20:39:32 GMT]]></title><description><![CDATA[<p>Hatte keinen Bock den Code zu korrigieren ... so meldet der Compiler aber keine Meldung:</p>
<pre><code class="language-cpp">#ifndef SORT_H__INCLUDED
#define SORT_H__INCLUDED

template &lt;class T&gt;
class sort
{
public:
	sort()	{}
	~sort()	{}

public:
	void sort_array(T*&amp;, const size_t&amp;);
	inline void swap(T&amp;, T&amp;)
	{
		T temp = a;
		a = b;
		b = temp;
	}
};

template &lt;class T&gt;
void sort&lt;T&gt;::sort_array(T*&amp; arr, const size_t&amp; length)
{
    T tradeoff;
    for (size_t x = 0; x &lt; (length - 1); ++x)
    {
        tradeoff = x;
        for (size_t y = 0; y &lt; (length - x); ++y)
            if (arr[tradeoff] &gt; arr[y])
                swap(arr[tradeoff], arr[y]);
    }

}

#endif // SORT_H__INCLUDED
</code></pre>
<p>... kann man aber noch stark optimieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1266771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1266771</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 15 Apr 2007 20:39:32 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Sun, 15 Apr 2007 21:29:56 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn aus templates (&quot;Schablonen&quot;) &quot;richtige&quot; Funktionen/Klassen gemacht werden, nennt man das &quot;instantiiert&quot;. Das macht der Compiler für Dich und er zeigt an, welche Zeile im Code ihn dazu veranlassen (das passiert nämlich nur für die Typen und Situationen, in denen sie tatsächlich verwendet werden).</p>
<p>Leider hast Du (wenn ich das richtig lese) den wesentlichen Teil der Fehlermeldung abgeschnitten, so dass ich Dir zu dem einen error nichts sagen kann. Die warnings kommen daher, dass Du tradeoff letztlich als (signed) int deklariert hast ... und es mit size_t (immer unsigned) vergleichst.... (und i genauso).<br />
BTW: warum tradeoff vom Typ T sein sollte, ist mir nicht klar ... es bezeichnet doch auch nur eine Position, oder ?</p>
<p>Gruß,</p>
<p>Simon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1266785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1266785</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sun, 15 Apr 2007 21:29:56 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Sun, 15 Apr 2007 21:54:38 GMT]]></title><description><![CDATA[<p>Die Glaskugel hat CStoll gestohlen, und irgendwie sieht das ganze für T=int harmlos aus; poste doch mal die genaue Fehlermeldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1266795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1266795</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 15 Apr 2007 21:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Mon, 16 Apr 2007 06:16:02 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Die Glaskugel hat CStoll gestohlen</p>
</blockquote>
<p>Hey, keine Verleumdungen - ich hab' meine eigene Glaskugel.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14886">@Stromberg</a>: Hat es einen Grund, daß du nicht std::sort verwendest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1266854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1266854</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 16 Apr 2007 06:16:02 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Mon, 16 Apr 2007 20:34:44 GMT]]></title><description><![CDATA[<p>So da bin ich wieder.<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a><br />
Ja kein Plan, ich hab das eher so als Übung gemacht, also nur zum Vergnügen. Außerdem sollte man doch wenn man ein guter Programmierer ist bzw. werden möchte <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="🙂"
    /> mindestens einen&quot;simplen&quot; Sortieralgorithmus (schreibt man des so?) coden können oder?<br />
So hier ist noch mal das gleiche von gestern, das mit dem &quot;T tradeoff&quot; war Schwachsinn, hab ich eingesehen. Außerdem war meine Sortiermethode auch volkommen falsch.<br />
Aber so passt doch die Methode &quot;sort_array&quot; jetzt oder???</p>
<p>CODE:</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;sort.hpp&quot;

int main()
{
    int field[10]={10,2,1,5,4,8,12,11,16,14};
    sort&lt;int&gt; grade;
    grade.sort_array(field,10);
    for (int i=0;i&lt;10;i++)
    std::cout &lt;&lt; field[i] &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>sort.hpp</p>
<pre><code class="language-cpp">#ifndef SORT_HPP_INCLUDED
#define SORT_HPP_INCLUDED

template &lt;class T&gt;
class sort
{
    public:
    sort();
    ~sort();
    void sort_array(T *array,int length);
    void swap(T &amp;a,T &amp;b);

    private:

};

template &lt;class T&gt;
sort&lt;T&gt;::sort()
{

}

template &lt;class T&gt;
sort&lt;T&gt;::~sort()
{

}

template &lt;class T&gt;
void sort&lt;T&gt;::sort_array(T *array,int length)
{
    int tradeoff=0;
    for (int i=0;i&lt;length-1;i++)
    {
        tradeoff=i;
        for (int j=i;j&lt;length;j++)
        {
            if (array[tradeoff]&gt;array[j])
            {
                tradeoff=j;
            }
        }
        swap(array[i],array[tradeoff]);
    }
}

template &lt;class T&gt;
void sort&lt;T&gt;::swap(T &amp;a,T &amp;b)
{
    const T temp=a;
    a=b;
    b=temp;
}

#endif // SORT_HPP_INCLUDED
</code></pre>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267383</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Mon, 16 Apr 2007 20:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Mon, 16 Apr 2007 21:24:38 GMT]]></title><description><![CDATA[<p>habe hier jetzt nicht die ganze diskussion mitverfolgt, aber... wozu eigentlich eine klasse ohne member-variablen und ohne gar nichts? wäre hier eine</p>
<pre><code class="language-cpp">template&lt;class T&gt;
sort(T* pArray, size_t n){...}
</code></pre>
<p>nicht angemessener? <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/1267403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267403</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Mon, 16 Apr 2007 21:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Tue, 17 Apr 2007 07:13:50 GMT]]></title><description><![CDATA[<p>Andrey schrieb:</p>
<blockquote>
<p>habe hier jetzt nicht die ganze diskussion mitverfolgt, aber... wozu eigentlich eine klasse ohne member-variablen und ohne gar nichts? wäre hier eine</p>
<pre><code class="language-cpp">template&lt;class T&gt;
sort(T* pArray, size_t n){...}
</code></pre>
<p>nicht angemessener? <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>
</blockquote>
<p>Wie ich finde, ein sehr guter Vorschlag. Wenn man unbedingt eine Klasse haben möchte, würde ich einen echten &quot;Funktor&quot; bauen:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
struct sort
{
    void operator()(T *array,size_t length) {
       size_t tradeoff=0; // wenn size_t gemeint ist, sollte man es auch nehmen
       for (size_t i=0;i&lt;length-1;i++)   {
          tradeoff=i;
          for (size_t j=i;j&lt;length;j++)  {
             if (array[tradeoff]&gt;array[j]) tradeoff=j;
        }
        // std::swap braucht man nicht nachzuprogrammieren
        std::swap(array[i],array[tradeoff]);
    }
// Konstruktoren und Destriktoren, die nix tun, braucht keiner
};
</code></pre>
<p>und schon wird auch der Aufruf übersichtlicher:</p>
<pre><code class="language-cpp">int main()
{
    int field[10]={10,2,1,5,4,8,12,11,16,14};
    sort&lt;int&gt; mySort;
    mySort(field,10);
    for (int i=0;i&lt;10;i++)
    std::cout &lt;&lt; field[i] &lt;&lt; std::endl;

    return 0;
}
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267505</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 17 Apr 2007 07:13:50 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Tue, 17 Apr 2007 14:18:56 GMT]]></title><description><![CDATA[<p>Ah ja okay, hab das dann so gemacht:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
void sort&lt;T&gt;::operator() (T *array,int length)
{
    sort_array(array,length);
}
</code></pre>
<p>Was soll den genau ein &quot;Funktor&quot; sein? Is damit sowas gemeint wie ..(int length)... das ding wo man halt argumente reinschreibt?<br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267777</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Tue, 17 Apr 2007 14:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Tue, 17 Apr 2007 14:28:10 GMT]]></title><description><![CDATA[<p>Ein Funktor oder Funktionsobjekt ist ein Objekt, das sich wie eine Funktion verhält. Das erreichst du, indem du operator() überlädst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267789</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 17 Apr 2007 14:28:10 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Tue, 17 Apr 2007 14:38:13 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>...<br />
Was soll den genau ein &quot;Funktor&quot; sein? ...</p>
</blockquote>
<p>&quot;Funktor&quot; = &quot;Funktionsobjekt&quot; = &quot;Ein Objekt, das eigentlich nur einen Funktionsaufruf darstellt/kapselt&quot;.<br />
Sowas wird z.B. in der C++-Standardlib gerne verwendet, weil es letztlich flexibler und syntaktisch einfacher zu handhaben ist als Funktionspointer.</p>
<p>Klassischerweise überlädt man den operator(), damit man es einfach aufrufen kann.<br />
Es kann zwar &quot;Status haben&quot; (Attribute, über Konstruktor gesetzt, ...), sollte aber nicht allzuviel innere Logik besitzen und &quot;einfach kopierbar&quot; sein.</p>
<p>Ehrlich gesagt: Wenn Du sowieso sort_array() aufrufst, sehe ich überhaupt keinen Nährwert von dem struct mehr.... :p</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1267797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1267797</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 17 Apr 2007 14:38:13 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Wed, 18 Apr 2007 19:31:46 GMT]]></title><description><![CDATA[<p>Mh was meinst du mit:</p>
<blockquote>
<p>Ehrlich gesagt: Wenn Du sowieso sort_array() aufrufst, sehe ich überhaupt keinen Nährwert von dem struct mehr...</p>
</blockquote>
<p>Wo kommt da n struct vor?<br />
Sorry für die blöden Fragen bin halt n Anfänger <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="😞"
    /><br />
Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1268760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1268760</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Wed, 18 Apr 2007 19:31:46 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Thu, 19 Apr 2007 15:59:44 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Mh was meinst du mit:</p>
<blockquote>
<p>Ehrlich gesagt: Wenn Du sowieso sort_array() aufrufst, sehe ich überhaupt keinen Nährwert von dem struct mehr...</p>
</blockquote>
<p>Wo kommt da n struct vor?...</p>
</blockquote>
<p>(Übrigens: Die Frage finde ich nicht blöd - brauchst Du Dich nicht für entschuldigen)</p>
<p>Hier:</p>
<p>Stromberg schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
void sort&lt;T&gt;::operator() (T *array,int length)
...
</code></pre>
</blockquote>
<p>Da definierst Du die komplette Funktionalität in eine einzige public Memberfunktion einer Klasse (oder struct). Und diese Klasse beinhaltet selbst keinen &quot;Zustand&quot; oder irgendeine andere Funktionalität.</p>
<p>Mal andersherum gefragt: Warum sollte irgendein User</p>
<pre><code class="language-cpp">...
   sort&lt;int&gt; mySort; // Instantiierung eines Objekts + explizite Typangabe notwendig
   mySort(array, length);
...
</code></pre>
<p>aufrufen, wenn er viel einfacher direkt</p>
<pre><code class="language-cpp">... // Kein Objekt und keine explizite Typangabe notwendig
    sort_array(array,length);
...
</code></pre>
<p>nutzen könnte ?<br />
Natürlich könntest Du ihn dazu zwingen, indem Du sort_array() &quot;versteckst&quot;, aber warum ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
<p>P.S.: Vielleicht kam Deine Verwirrung auch einfach daher, dass Du &quot;class { public:&quot; geschrieben hast, wo ich lieber &quot;struct {&quot; nehme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269387</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269387</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 19 Apr 2007 15:59:44 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Thu, 19 Apr 2007 19:44:01 GMT]]></title><description><![CDATA[<p>Ja gut stimmt, es ist wirklich bisschen kompliziert, und viel Schreibarbeit.<br />
Sollte ich dann vll. einfach eine Template-Funktion verwenden?<br />
Aber weiß nicht ich bin irgendwie grad so &quot;Klassengeil&quot; :D, weil ich denk mir immer das ich ja nicht in &quot;C&quot; bin sondern das ich ja in &quot;C++&quot; bin, und wenn es einem mit den Klassen schon angeboten wird, dann soll man das doch auch machen? Professionelle C++ programmierer machen doch auch alles aus Klassen oder?<br />
Früher vor paar Monaten hab ich immer alles in Funktionen programmiert, aber jetzt will ich irgendwie nur noch Klassen verwenden weil ich glaub des is n besser Programmierstil?<br />
Aber langsam lern ich irgendwie das nicht alles was aus Klassen besteht, zwingend guter Quellcode sein muss.<br />
Äh und dann hab ich noch folgendes ausprobieren wollen, aber es hat irgendwie nicht richtig funktioniert. Ich wollte in &quot;sort.hpp&quot; ein Klassenobjekt erstellen (also extern), sodass man das dann immer ganz einfach in der &quot;main.cpp&quot; aufrufen kann, ohne extra ein neues Objekt zu erstellen.<br />
Das wäre doch schon ein bisschen benutzerfreundlicher oder?</p>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;sort.hpp&quot;

int main()
{
    int buffer;
    int field[10];
    for (int i=0;i&lt;10;i++)
    {
        std::cin &gt;&gt; buffer;
        field[i]=buffer;
    }
    std::cout &lt;&lt; &quot;\n&quot;;
    sorting(field,10);
    for (int i=0;i&lt;10;i++)
    {
        std::cout &lt;&lt; field[i] &lt;&lt; &quot;\n&quot;;
    }

	return 0;
}
</code></pre>
<p>sort.hpp</p>
<pre><code class="language-cpp">#ifndef SORT_HPP_INCLUDED
#define SORT_HPP_INCLUDED

template &lt;class T&gt;
class sort
{
    public:
    sort();
    ~sort();
    void sort_array(T *array,int length);
    void swap(T &amp;a,T &amp;b);
    void operator() (T *array,int length);

    private:

};

template &lt;class T&gt;
sort&lt;T&gt;::sort()
{

}

template &lt;class T&gt;
sort&lt;T&gt;::~sort()
{

}

template &lt;class T&gt;
void sort&lt;T&gt;::sort_array(T *array,int length)
{
    int tradeoff=0;
    for (int i=0;i&lt;length-1;i++)
    {
        tradeoff=i;
        for (int j=i;j&lt;length;j++)
        {
            if (array[tradeoff]&gt;array[j])
            {
                tradeoff=j;
            }
        }
        swap(array[i],array[tradeoff]);
    }
}

template &lt;class T&gt;
void sort&lt;T&gt;::swap(T &amp;a,T &amp;b)
{
    const T temp=a;
    a=b;
    b=temp;
}

template &lt;class T&gt;
void sort&lt;T&gt;::operator() (T *array,int length)
{
    sort_array(array,length);
}

extern sort&lt;int&gt; sorting;

#endif // SORT_HPP_INCLUDED
</code></pre>
<p>ERROR:</p>
<blockquote>
<p>-------------- Build: Debug in sortieren ---------------<br />
Compiling: main.cpp<br />
Linking console executable: .\sortieren.exe<br />
obj\Debug\main.o: In function <code>main': C:/MinGW/Andi/C++/Projekte/sortieren/main.cpp:14: undefined reference to</code>sorting'<br />
collect2: ld returned 1 exit status<br />
Process terminated with status 1 (0 minutes, 0 seconds)<br />
1 errors, 0 warnings</p>
</blockquote>
<p>Dankeschön schon mal im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269588</guid><dc:creator><![CDATA[Stromberg]]></dc:creator><pubDate>Thu, 19 Apr 2007 19:44:01 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Fri, 20 Apr 2007 06:36:05 GMT]]></title><description><![CDATA[<p>Kurze Antwort: Lass die Klasse weg und schreib eine einfache (Template-)Funktion zur Sortierung. Wie Simon schon gesagt hat, ist die Klasse an dieser Stelle nur eine unnütze Spielerei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269729</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 20 Apr 2007 06:36:05 GMT</pubDate></item><item><title><![CDATA[Reply to Templateproblem on Fri, 20 Apr 2007 06:40:34 GMT]]></title><description><![CDATA[<p>Stromberg schrieb:</p>
<blockquote>
<p>Ja gut stimmt, es ist wirklich bisschen kompliziert, und viel Schreibarbeit.<br />
Sollte ich dann vll. einfach eine Template-Funktion verwenden? ...</p>
</blockquote>
<p>Japp !<br />
Sortieren ist einfach ein ganz klassischer Algorithmus ... und hat von der Aufgabenstellung nichts &quot;Objektartiges&quot;. Deswegen würde ich auch nicht versuchen, es als Klasse zu modellieren.</p>
<p>@&quot;C++ machen&quot;: Machst Du doch ! Generische Programmierung mit templates ist absolutes C++. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Wenn Du &quot;Klassenübungen&quot; machen möchtest, solltest Du Dir eine andere Aufgae suchen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1269731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1269731</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 20 Apr 2007 06:40:34 GMT</pubDate></item></channel></rss>