<?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[Auch ein Problem mit Templates =(]]></title><description><![CDATA[<p>Hi,</p>
<p>Wenn ich versuche folgende Funktion zu compilieren</p>
<pre><code class="language-cpp">template&lt;class tC1,class tC2,class tC3&gt; tC1 GetDistance(Vector2&lt;tC2&gt; vector_a,Vector2&lt;tC3&gt; vector_b)
{

    Vector2&lt;tC1&gt; re_Vec;
    re_Vec.data.x=vector_b.data.x-vector_a.data.x;
    re_Vec.data.y=vector_b.data.y-vector_a.data.y;

    tC1 d;
    re_Vec.Getl&lt;tC1&gt;();
    return  d;

}
</code></pre>
<p>komme diese Fehler:</p>
<pre><code>expected primary-expression before '&gt;' token
expected primary-expression before ')' token
</code></pre>
<p>Ich kann mir diesen aber nicht erklären.<br />
Habe ich irgendewas übersehen?</p>
<p>Bin für jede Hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128541/auch-ein-problem-mit-templates</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 21:00:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128541.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Dec 2005 19:07:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Sun, 04 Dec 2005 19:07:24 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Wenn ich versuche folgende Funktion zu compilieren</p>
<pre><code class="language-cpp">template&lt;class tC1,class tC2,class tC3&gt; tC1 GetDistance(Vector2&lt;tC2&gt; vector_a,Vector2&lt;tC3&gt; vector_b)
{

    Vector2&lt;tC1&gt; re_Vec;
    re_Vec.data.x=vector_b.data.x-vector_a.data.x;
    re_Vec.data.y=vector_b.data.y-vector_a.data.y;

    tC1 d;
    re_Vec.Getl&lt;tC1&gt;();
    return  d;

}
</code></pre>
<p>komme diese Fehler:</p>
<pre><code>expected primary-expression before '&gt;' token
expected primary-expression before ')' token
</code></pre>
<p>Ich kann mir diesen aber nicht erklären.<br />
Habe ich irgendewas übersehen?</p>
<p>Bin für jede Hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934183</guid><dc:creator><![CDATA[Wolly]]></dc:creator><pubDate>Sun, 04 Dec 2005 19:07:24 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Mon, 05 Dec 2005 07:19:19 GMT]]></title><description><![CDATA[<p>Naja... sagen wirs mal so, einen 2D-Vector als Template-Klasse zu definieren... weiss nicht ob das so geschickt ist.<br />
Ansonsten lässt sich anhand deines Codes nicht wirklich sagen wo das Problem liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934617</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Mon, 05 Dec 2005 07:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Mon, 05 Dec 2005 11:26:42 GMT]]></title><description><![CDATA[<p>Hallo Wolly,</p>
<p>der von Dir gepostete Code hat in sich keinen Syntax-Fehler. Der Fehler muss also in Code liegen, den Du nicht gepostet hast.<br />
Darüber hinaus sind aber ein paar 'Ungereimheiten' ersichtlich.</p>
<p>Wolly schrieb:</p>
<blockquote>
<pre><code class="language-cpp">tC1 d;
    re_Vec.Getl&lt;tC1&gt;();
    return  d;
</code></pre>
</blockquote>
<p>Die Variable 'd' wird nicht initialisiert, nicht verändert und anschließend als Ergebnis zurück gegeben. Das kann nur falsch sein!</p>
<p>Die Template-Methode Getl (ich unterstelle mal Get-Länge) macht als Template keinen Sinn.</p>
<p>Dem Vector2 scheinen ein Konstruktor und ein operator- zu fehlen - ich unterstelle hier, dass Vector2 einen Punkt bzw. math. Vektor in der Ebene darstellen soll.</p>
<p>Und schließlich solltest Du die Übergabe-Parameter in 'GetDistance' als const refence deklarieren.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/934817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/934817</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Mon, 05 Dec 2005 11:26:42 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Mon, 05 Dec 2005 18:15:36 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Hier ist nochmal der ganze Quelltext:</p>
<pre><code class="language-cpp">template&lt;class myClass&gt; class Vector2{
public:
    // Vector-Daten
    struct {
        myClass x;
        myClass y;
    } data;

    // Operatoren 
    Vector2&lt;myClass&gt; operator+(Vector2&lt;myClass&gt; ob2);
    Vector2&lt;myClass&gt; operator-(Vector2&lt;myClass&gt; ob2);
    Vector2&lt;myClass&gt; operator*(Vector2&lt;myClass&gt; ob2);
    Vector2&lt;myClass&gt; operator/(Vector2&lt;myClass&gt; ob2);

    // Get-Methoden
    template&lt;class my_Class&gt; my_Class Getl();
};

//Getl()
template&lt;class myClass&gt; template&lt;class my_Class&gt; my_Class Vector2&lt;myClass&gt;::Getl()
{
    my_Class lenght;

    lenght=sqrt(pow(data.x,2)+pow(data.y,2));
    return lenght;

}

// Operator+
template&lt;class myClass&gt; Vector2&lt;myClass&gt; Vector2&lt;myClass&gt;::operator+(Vector2&lt;myClass&gt; ob2)
{
        Vector2&lt;myClass&gt; re;

        re.data.x=data.x+ob2.data.x;
        re.data.y=data.y+ob2.data.y;

        return re;   
}
//Operator-
template&lt;class myClass&gt; Vector2&lt;myClass&gt; Vector2&lt;myClass&gt;::operator-(Vector2&lt;myClass&gt; ob2)
{
        Vector2&lt;myClass&gt; re;

        re.data.x=data.x-ob2.data.x;
        re.data.y=data.y-ob2.data.y;

        return re;   
}
//Operator*
template&lt;class myClass&gt; Vector2&lt;myClass&gt; Vector2&lt;myClass&gt;::operator*(Vector2&lt;myClass&gt; ob2)
{
        Vector2&lt;myClass&gt; re;

        re.data.x=data.x*ob2.data.x;
        re.data.y=data.y*ob2.data.y;

        return re;   
}
//Operator/
template&lt;class myClass&gt; Vector2&lt;myClass&gt; Vector2&lt;myClass&gt;::operator/(Vector2&lt;myClass&gt; ob2)
{
        Vector2&lt;myClass&gt; re;

        re.data.x=data.x/ob2.data.x;
        re.data.y=data.y/ob2.data.y;

        return re;   
}

template&lt;class tC1,class tC2,class tC3&gt; tC1 GetDistance(Vector2&lt;tC2&gt; vector_a,Vector2&lt;tC3&gt; vector_b)
{

    Vector2&lt;tC1&gt; re_Vec;
    re_Vec.data.x=vector_b.data.x-vector_a.data.x;
    re_Vec.data.y=vector_b.data.y-vector_a.data.y;

    tC1 d;
    d=re_Vec.Getl&lt;tC1&gt;();
    return  d;

}
</code></pre>
<p>Die Fehler bleiben die selben.<br />
Eine Frage habe ich aber noch.Lohnt es sich überhaupt die Vector-Klasse<br />
als Template zu machen? Oder soll ich lieber eine für int und eine double Werte schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935231</guid><dc:creator><![CDATA[Wolly]]></dc:creator><pubDate>Mon, 05 Dec 2005 18:15:36 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Mon, 05 Dec 2005 18:38:24 GMT]]></title><description><![CDATA[<p>In welcher Zeile tauchen die Fehler auf. Ich habe mal ohne drüberzuschauen das ganze unter meinem MSVC compiliert - Kein Fehler.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935247</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Mon, 05 Dec 2005 18:38:24 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Mon, 05 Dec 2005 18:58:59 GMT]]></title><description><![CDATA[<p>Er tritt bei</p>
<pre><code class="language-cpp">template&lt;class tC1,class tC2,class tC3&gt; tC1 GetDistance(Vector2&lt;tC2&gt; vector_a,Vector2&lt;tC3&gt; vector_b)
{

    Vector2&lt;tC1&gt; re_Vec;
    re_Vec.data.x=vector_b.data.x-vector_a.data.x;
    re_Vec.data.y=vector_b.data.y-vector_a.data.y;

    tC1 d;
    d=re_Vec.Getl&lt;tC1&gt;(); // &lt;- Hier kommen die Fehler
    return  d;
}
</code></pre>
<p>auf.<br />
Sie lauten:</p>
<pre><code>expected primary-expression before '&gt;' token
expected primary-expression before ')' token
</code></pre>
<p>Ich benutze Dev c++, könnte es daran liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935261</guid><dc:creator><![CDATA[Wolly]]></dc:creator><pubDate>Mon, 05 Dec 2005 18:58:59 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Mon, 05 Dec 2005 19:04:05 GMT]]></title><description><![CDATA[<p>Nabend,</p>
<p>mach das '&lt;tC1&gt;' hinter Getl weg. Du musst hier keinen Typ angeben, das hast du<br />
ja bereits bei der Deklaration von re_Vec gemacht.</p>
<p>mfg<br />
v R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935265</guid><dc:creator><![CDATA[virtuell Realisticer]]></dc:creator><pubDate>Mon, 05 Dec 2005 19:04:05 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Tue, 06 Dec 2005 07:44:03 GMT]]></title><description><![CDATA[<p>Wolly schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;class my_Class&gt; my_Class Getl();

//Getl()
template&lt;class myClass&gt; template&lt;class my_Class&gt; my_Class Vector2&lt;myClass&gt;::Getl()
{
    my_Class lenght;
    
    lenght=sqrt(pow(data.x,2)+pow(data.y,2));
    return lenght;
    
}
</code></pre>
</blockquote>
<p>Wieso ist das Gebilde eigentlich als Template definiert? Die Länge sollte doch eigentlich den selben Typ besitzen wie deine Vektor-Elemente, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/935476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935476</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 06 Dec 2005 07:44:03 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Tue, 06 Dec 2005 12:44:43 GMT]]></title><description><![CDATA[<p>Der Rückgabewert soll eben nicht den gleichen Typ haben wie die Klasse.<br />
Beispiel:<br />
2d-Welt =&gt; Ich benutze</p>
<pre><code class="language-cpp">Vector2&lt;int&gt;
</code></pre>
<p>coord da Komma-Wert Sinnlos wären.</p>
<p>Nun möchte ich aber die Entfernung zwischen 2 Punkten wissen und die möchte ich dann genauer haben.</p>
<pre><code class="language-cpp">Vector2&lt;int&gt; v1;

v1.Getl&lt;double&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/935680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/935680</guid><dc:creator><![CDATA[Wolly]]></dc:creator><pubDate>Tue, 06 Dec 2005 12:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Wed, 07 Dec 2005 06:27:37 GMT]]></title><description><![CDATA[<blockquote>
<p>2d-Welt =&gt; Ich benutze Ganzzahl-Koordinaten da Komma-Wert sinnlos wären.</p>
</blockquote>
<p>Das halt ich aber für ein ziemliches Gerücht. Das Arbeiten mit Ganzzahlen hat an der Stelle den Vorteil, dass man dadurch um die Flieskommadarstellung herum kommt.<br />
Die Distanz jedoch als double-Wert berechenen zu wollen zeigt, dass da in deinem Konzept was nicht passt. Dein gewähltes Raster (Ganzzahlen) ist im allgemeinen zu grob.<br />
Ist ziemlich doof wenn man z.B. eine Distanz von 2,975234 misst und man nicht in der Lage ist seine Koordinaten so zu verändern, dass z.B. 3 heraus kommt, nur weil die Linie schärg liegt und man nur Ganzzahlen eingeben kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936309</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Wed, 07 Dec 2005 06:27:37 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Wed, 07 Dec 2005 07:20:39 GMT]]></title><description><![CDATA[<p>An deiner Stelle würde ich eher eine Möglichkeit bereitstellen, verschiedene Vektoren ineinander umzurechnen (z.B. mit einem Template-Konstruktor).</p>
<p>Und außerdem - bei deiner Abstandsberechnung verwendest du schon einen Vektor&lt;Zieltyp&gt; für die interne Berechnung - also ist es doppelt gemoppelt, von dem noch eine Template-Längenfunktion aufzurufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936333</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 07 Dec 2005 07:20:39 GMT</pubDate></item><item><title><![CDATA[Reply to Auch ein Problem mit Templates =( on Wed, 07 Dec 2005 08:58:17 GMT]]></title><description><![CDATA[<p>kleiner tip: es ist i.allg. sinnvoll, auch += -= etc. zu definieren und dann +- etc. freistehend und durch diese operationen auszudrücken. ausserdem ist es häufig günstiger, per referenz auf const zu übergeben statt per value:</p>
<pre><code class="language-cpp">// Operator+
template&lt;class myClass&gt; Vector2&lt;myClass&gt;&amp; Vector2&lt;myClass&gt;::operator+=(const Vector2&lt;myClass&gt;&amp; ob2)
{
        data.x+=ob2.data.x;
        data.y+=ob2.data.y;

        return *this;  
}
template&lt;class myClass&gt; Vector2&lt;myClass&gt; operator+(Vector2&lt;myClass&gt; ob1, const Vector2&lt;myClass&gt;&amp; ob2)
{
        return ob1+=ob2;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/936395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936395</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 07 Dec 2005 08:58:17 GMT</pubDate></item></channel></rss>