<?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[Template-Klassen + überladene Operatoren]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab ein Problem mit dem überladen von Operatoren in Template Klassen - speziell mit den Eingabe- und Ausgabeoperatoren<br />
Es kommen Fehlermeldungen, dass angeblich in der Zeile 29 und 30 ein Semikolon bzw. eine Klammer fehlen würde?!<br />
Könnt ihr mir helfen?</p>
<p>dekl.h</p>
<pre><code class="language-cpp">#ifndef KSet_h
#define KSet_h
////////////////////////////////////////////////////////////////////////////////
#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;

template &lt;class T&gt;
class Kset
{
private:
        struct Knoten
        {
         Knoten *pNext;
         T Inhalt;
        };

        int Anzahl;
        Knoten* pFirst;

public:
        Kset();
        ~Kset();

        void insert_front(T obj);
        void display();

        //Kset&lt;T&gt;&amp; operator=(const Kset&lt;T&gt;&amp;);
        friend ostream&amp; operator&lt;&lt; (ostream&amp; ,const KSet&lt;T&gt; &amp; );
        friend istream&amp; operator&gt;&gt; (istream&amp; ,const KSet&lt;T&gt; &amp; );
};

//----------------------------------------------------------------------------
#endif
#include &quot;impl.hpp&quot;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/150991/template-klassen-überladene-operatoren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 06 Sep 2026 01:28:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150991.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Jun 2006 07:24:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 07:24:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab ein Problem mit dem überladen von Operatoren in Template Klassen - speziell mit den Eingabe- und Ausgabeoperatoren<br />
Es kommen Fehlermeldungen, dass angeblich in der Zeile 29 und 30 ein Semikolon bzw. eine Klammer fehlen würde?!<br />
Könnt ihr mir helfen?</p>
<p>dekl.h</p>
<pre><code class="language-cpp">#ifndef KSet_h
#define KSet_h
////////////////////////////////////////////////////////////////////////////////
#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;

template &lt;class T&gt;
class Kset
{
private:
        struct Knoten
        {
         Knoten *pNext;
         T Inhalt;
        };

        int Anzahl;
        Knoten* pFirst;

public:
        Kset();
        ~Kset();

        void insert_front(T obj);
        void display();

        //Kset&lt;T&gt;&amp; operator=(const Kset&lt;T&gt;&amp;);
        friend ostream&amp; operator&lt;&lt; (ostream&amp; ,const KSet&lt;T&gt; &amp; );
        friend istream&amp; operator&gt;&gt; (istream&amp; ,const KSet&lt;T&gt; &amp; );
};

//----------------------------------------------------------------------------
#endif
#include &quot;impl.hpp&quot;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1082666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082666</guid><dc:creator><![CDATA[Mr. Blonde]]></dc:creator><pubDate>Thu, 22 Jun 2006 07:24:24 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 08:12:43 GMT]]></title><description><![CDATA[<p>Erstmal solltest du lieber &lt;iostream&gt; includen (ohne .h) und die Stream-Klassen mit std:: kennzeichnen. Zweitens wirst du nicht viel Freude an deinem op&gt;&gt; haben, wenn du dem ein <em>konstantes</em> Objekt übergeben willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1082710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082710</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Jun 2006 08:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 09:23:03 GMT]]></title><description><![CDATA[<p>okay ... dann so:</p>
<pre><code class="language-cpp">#ifndef KSet_h
#define KSet_h
////////////////////////////////////////////////////////////////////////////////
#include &lt;iostream&gt;
#include &lt;conio&gt;

template &lt;class T&gt;
class Kset
{
private:
        struct Knoten
        {
         Knoten *pNext;
         T Inhalt;
        };

        int Anzahl;
        Knoten* pFirst;

public:
        Kset();
        ~Kset();

        void insert_front(T obj);
        void display();

        //Kset&lt;T&gt;&amp; operator=(const Kset&lt;T&gt;&amp;);
        friend ostream&amp; operator&lt;&lt; (ostream&amp; ,KSet&lt;T&gt; &amp; );
        friend istream&amp; operator&gt;&gt; (istream&amp; ,KSet&lt;T&gt; &amp; );
};

//----------------------------------------------------------------------------
#endif
#include &quot;impl.hpp&quot;
</code></pre>
<p>es will aber immer noch nicht ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1082769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082769</guid><dc:creator><![CDATA[Mr. Blonde]]></dc:creator><pubDate>Thu, 22 Jun 2006 09:23:03 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 09:34:05 GMT]]></title><description><![CDATA[<p>Die solltest dich schon derauf festlegen, ob du Kset oder KSet schreiben willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1082780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082780</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Thu, 22 Jun 2006 09:34:05 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 09:59:16 GMT]]></title><description><![CDATA[<p>mhhh ... da ist irgendwas falsch gelaufen ... in meinem Quelltext sind &quot;Kset&quot; alle gleich geschrieben ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1082786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082786</guid><dc:creator><![CDATA[Mr. Blonde]]></dc:creator><pubDate>Thu, 22 Jun 2006 09:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 10:06:39 GMT]]></title><description><![CDATA[<p>*g* &lt;conio.h&gt; ist kein Standard-Header - dort ist die Endung noch notwendig (wobei, für deine Deklaration brauchst du es nicht einmal). Und dann heißt es &quot;std::istream&quot; bzw. &quot;std::ostream&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1082790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082790</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 22 Jun 2006 10:06:39 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Thu, 22 Jun 2006 10:24:57 GMT]]></title><description><![CDATA[<p>okili ... dann mit .h ^^</p>
<p>aber das ist ja jetzt gerade nicht das problem ... sondern eher das oben beschriebene ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1082794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1082794</guid><dc:creator><![CDATA[Mr. Blonde]]></dc:creator><pubDate>Thu, 22 Jun 2006 10:24:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Fri, 23 Jun 2006 10:56:52 GMT]]></title><description><![CDATA[<p>OMG <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="😃"
    /> sind ir jetzt schon so beschaeftigt die Kleinigkeiten zu verbessern dass wir das tatsaechliche Problem einfach ignorieren? <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>Vielleicht hilft dir folgender Link auf die Spruenge:</p>
<p><a href="http://www.digitalmars.com/archives/cplusplus/2126.html" rel="nofollow">http://www.digitalmars.com/archives/cplusplus/2126.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1083723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1083723</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Fri, 23 Jun 2006 10:56:52 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Fri, 23 Jun 2006 11:22:31 GMT]]></title><description><![CDATA[<p>Blue-Tiger schrieb:</p>
<blockquote>
<p>OMG <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="😃"
    /> sind ir jetzt schon so beschaeftigt die Kleinigkeiten zu verbessern dass wir das tatsaechliche Problem einfach ignorieren? <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>Vielleicht hilft dir folgender Link auf die Spruenge:</p>
<p><a href="http://www.digitalmars.com/archives/cplusplus/2126.html" rel="nofollow">http://www.digitalmars.com/archives/cplusplus/2126.html</a></p>
</blockquote>
<p>das ist allerdings - bezoigen auf die fehlermeldungen und den code, der gepostet wurde - nicht das problem (im prinzip nat. schon, sonst müssten ja für alle T, die gebraucht werden, übherladungen geschrieben werden). das problem ist einfach die fehlende qualifikation von ostream und istream mit std::, bzw. das sichtbarmachen dieser bezeichner mittels using (die fehlermeldung ist typisch dafür, dass der bezeichner unbekannt ist),</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1083740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1083740</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 23 Jun 2006 11:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Fri, 23 Jun 2006 12:26:08 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Blue-Tiger schrieb:</p>
<blockquote>
<p>OMG <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="😃"
    /> sind ir jetzt schon so beschaeftigt die Kleinigkeiten zu verbessern dass wir das tatsaechliche Problem einfach ignorieren? <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>Vielleicht hilft dir folgender Link auf die Spruenge:</p>
<p><a href="http://www.digitalmars.com/archives/cplusplus/2126.html" rel="nofollow">http://www.digitalmars.com/archives/cplusplus/2126.html</a></p>
</blockquote>
<p>das ist allerdings - bezoigen auf die fehlermeldungen und den code, der gepostet wurde - nicht das problem (im prinzip nat. schon, sonst müssten ja für alle T, die gebraucht werden, übherladungen geschrieben werden). das problem ist einfach die fehlende qualifikation von ostream und istream mit std::, bzw. das sichtbarmachen dieser bezeichner mittels using (die fehlermeldung ist typisch dafür, dass der bezeichner unbekannt ist),</p>
</blockquote>
<p>Im ursprungsquellcode wurde &lt;iostream.h&gt; verwendet, der Fehler waere also gar nicht aufgetreten, wenn es an fehlenden &quot;std&quot; gelegen haette <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="😉"
    /><br />
Andererseits hatte ein Studienkolleg von mir eben das selbe Problem (und hat mich genau deswegen auf diesen Thread hier aufmerksam gemacht), und da lies sich das Problem wie im Link angegeben loesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1083771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1083771</guid><dc:creator><![CDATA[Blue-Tiger]]></dc:creator><pubDate>Fri, 23 Jun 2006 12:26:08 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Klassen + überladene Operatoren on Fri, 23 Jun 2006 14:02:48 GMT]]></title><description><![CDATA[<p>interessanterweise ist auch in dem link nicht gerade die lösung gezeigt worden, die man erwartet: wir wollen ja für jedes T die betreefende instanz der funktions als friend der entsprechenden template klasse machen. im link wird nur gezeigt, wie wir alle instanzen des funktionstemplates frined jeder instanz des klassentemplates machen (nicht wirklich ein problem, aber allgemeiner als sinnvoll).</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A;

template &lt;class U&gt; void fn(A&lt;U&gt;&amp; a);

template &lt;class T&gt; class A {
    int i;
    template &lt;class U&gt; friend void fn(A&lt;U&gt;&amp; a); // jede instanz von fn
    template &lt;&gt; friend void fn&lt;T&gt;(A&amp; a); // nur die instanz mit gleichem template parameter (und nur hierfür brauchen wir die vorwärtsdeklaration)
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1083833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1083833</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 23 Jun 2006 14:02:48 GMT</pubDate></item></channel></rss>