<?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[Opterator &amp;lt;&amp;lt; in abstrakten Klassen überladen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine abstrakte Template Klasse und bekomme immer einen Fehler den ich leider ganz und gar nicht verstehe.</p>
<p>Meine Klasse sieht vereinfacht so aus:</p>
<pre><code class="language-cpp">template&lt;char Character, int Count = 3&gt;
class my_class
{
	public:
		my_class();
		virtual ~my_class();

	protected:

		//Operators, all are abstarct
		virtual std::ostream&amp; operator&lt;&lt;(std::ostream&amp; lhs, my_class const&amp; rhs) = 0;

	private:
};
</code></pre>
<p>Ich habe mich nach Punkt 3.4 gerichtet. <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html</a></p>
<p>Und nun gibt es immer folgende schöne Fehlermeldung:</p>
<blockquote>
<p>Description Resource Path Location Type<br />
'std::ostream&amp; my_class&lt;Character, Count&gt;::operator&lt;&lt;(std::ostream&amp;, const my_class&lt;Character, Count&gt;&amp;)' must take exactly one argument my_class.h /my_class line 16 C/C++ Problem</p>
</blockquote>
<p>Könnt ihr mir weiter helfen? Stehe momentan auf dem Schlauch.</p>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247316/opterator-lt-lt-in-abstrakten-klassen-überladen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 14:41:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247316.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Aug 2009 11:36:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Opterator &amp;lt;&amp;lt; in abstrakten Klassen überladen on Sun, 09 Aug 2009 11:36:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine abstrakte Template Klasse und bekomme immer einen Fehler den ich leider ganz und gar nicht verstehe.</p>
<p>Meine Klasse sieht vereinfacht so aus:</p>
<pre><code class="language-cpp">template&lt;char Character, int Count = 3&gt;
class my_class
{
	public:
		my_class();
		virtual ~my_class();

	protected:

		//Operators, all are abstarct
		virtual std::ostream&amp; operator&lt;&lt;(std::ostream&amp; lhs, my_class const&amp; rhs) = 0;

	private:
};
</code></pre>
<p>Ich habe mich nach Punkt 3.4 gerichtet. <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html</a></p>
<p>Und nun gibt es immer folgende schöne Fehlermeldung:</p>
<blockquote>
<p>Description Resource Path Location Type<br />
'std::ostream&amp; my_class&lt;Character, Count&gt;::operator&lt;&lt;(std::ostream&amp;, const my_class&lt;Character, Count&gt;&amp;)' must take exactly one argument my_class.h /my_class line 16 C/C++ Problem</p>
</blockquote>
<p>Könnt ihr mir weiter helfen? Stehe momentan auf dem Schlauch.</p>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757806</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Sun, 09 Aug 2009 11:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to Opterator &amp;lt;&amp;lt; in abstrakten Klassen überladen on Sun, 09 Aug 2009 11:43:11 GMT]]></title><description><![CDATA[<p>Als Funktion in einer Klasse nimmt der &lt;&lt;Operator als Argument nur die rechts stehende Klasse. In deinem Fall musst du die Funktion außerhalb der Klasse definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757811</guid><dc:creator><![CDATA[Caster]]></dc:creator><pubDate>Sun, 09 Aug 2009 11:43:11 GMT</pubDate></item><item><title><![CDATA[Reply to Opterator &amp;lt;&amp;lt; in abstrakten Klassen überladen on Sun, 09 Aug 2009 11:47:40 GMT]]></title><description><![CDATA[<p>Caster schrieb:</p>
<blockquote>
<p>..</p>
</blockquote>
<p>Was castest du eigentlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757812</guid><dc:creator><![CDATA[bettebo]]></dc:creator><pubDate>Sun, 09 Aug 2009 11:47:40 GMT</pubDate></item><item><title><![CDATA[Reply to Opterator &amp;lt;&amp;lt; in abstrakten Klassen überladen on Sun, 09 Aug 2009 12:08:02 GMT]]></title><description><![CDATA[<p>MrMilk schrieb:</p>
<blockquote>
<p>Ich habe mich nach Punkt 3.4 gerichtet. <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-232010.html</a></p>
</blockquote>
<p>Hast du leider nicht. Operator&lt;&lt; muss als freie Funktion überladen werden. Du kannst aber eine virtuelle Klassenfunktion benutzen, die die eigentliche Arbeit verrichtet und den op&lt;&lt; einfach diese aufrufen lassen:</p>
<pre><code class="language-cpp">template&lt;char Character, int Count = 3&gt;
class my_class
{
public:
  virtual std::ostream&amp; printToStream(std::ostream&amp; os) const = 0;
};

template&lt;char Character, int Count&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, my_class&lt;Character, Count&gt; const&amp; mc)
{
  return mc.printToStream(os);
}
</code></pre>
<p>Dann nurnoch printToStream überladen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757823</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 09 Aug 2009 12:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to Opterator &amp;lt;&amp;lt; in abstrakten Klassen überladen on Sun, 09 Aug 2009 17:42:22 GMT]]></title><description><![CDATA[<p>Wie immer vielen Dank an alle und natürlich besonderen Dank an pumuckl!<br />
Es klappt.</p>
<p>Viele grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1757967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1757967</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Sun, 09 Aug 2009 17:42:22 GMT</pubDate></item></channel></rss>