<?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[Klasse: Stream-Operator überladen]]></title><description><![CDATA[<p>Ich bekomme das mit der Syntax gerade nicht auf die Reihe, gewünscht ist folgendes:</p>
<pre><code class="language-cpp">MyClass a;
a &lt;&lt; &quot;Text&quot;;
a &lt;&lt; 28;
</code></pre>
<p>Intern besitzt a einen ofstream, in den soll einfach alles reingeschoben werden.<br />
Hab das jetzt so gelöst (ist das korrekt so?):</p>
<pre><code class="language-cpp">template&lt;class T&gt;
	  std::ofstream&amp; operator &lt;&lt; (T&amp; t) {
		  myFile &lt;&lt; t;
		  return myFile ;
	  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/316231/klasse-stream-operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 30 Jul 2026 08:22:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316231.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Apr 2013 10:36:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 10:36:59 GMT]]></title><description><![CDATA[<p>Ich bekomme das mit der Syntax gerade nicht auf die Reihe, gewünscht ist folgendes:</p>
<pre><code class="language-cpp">MyClass a;
a &lt;&lt; &quot;Text&quot;;
a &lt;&lt; 28;
</code></pre>
<p>Intern besitzt a einen ofstream, in den soll einfach alles reingeschoben werden.<br />
Hab das jetzt so gelöst (ist das korrekt so?):</p>
<pre><code class="language-cpp">template&lt;class T&gt;
	  std::ofstream&amp; operator &lt;&lt; (T&amp; t) {
		  myFile &lt;&lt; t;
		  return myFile ;
	  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2318622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318622</guid><dc:creator><![CDATA[DerKlassiker]]></dc:creator><pubDate>Fri, 26 Apr 2013 10:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 10:53:09 GMT]]></title><description><![CDATA[<p><strong>const</strong> T&amp; t</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318630</guid><dc:creator><![CDATA[geschrei]]></dc:creator><pubDate>Fri, 26 Apr 2013 10:53:09 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 11:02:02 GMT]]></title><description><![CDATA[<pre><code>class MyClass
{
private:
	ofstream file;
public:
	template&lt;class T&gt;
    std::ofstream&amp; operator&lt;&lt;(const T&amp; t)
	{
		return file;
	}
};

int main()
{
	MyClass a;
	a &lt;&lt; &quot;Text&quot;;
	a &lt;&lt; 28;
}
</code></pre>
<p>bind literals to const-ref.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318633</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 26 Apr 2013 11:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 12:00:39 GMT]]></title><description><![CDATA[<p>out, fehlt da nicht was?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318649</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 26 Apr 2013 12:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 13:25:20 GMT]]></title><description><![CDATA[<p>Welchen Compiler/IDE nutzt du?</p>
<p>Folgendes kompiliert einwandfrei unter Windows mit VC 2010 perfekt:</p>
<pre><code>#include &lt;fstream&gt;

class MyClass
{
private:
    std::ofstream file;
public:
    template&lt;class T&gt;
    std::ofstream&amp; operator&lt;&lt;(const T&amp; t)
    {
        return file;
    }
};

int main()
{
    MyClass a;
    a &lt;&lt; &quot;Text&quot;;
    a &lt;&lt; 28 &lt;&lt; &quot;l&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2318708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318708</guid><dc:creator><![CDATA[jhkhjkhjk]]></dc:creator><pubDate>Fri, 26 Apr 2013 13:25:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 13:34:40 GMT]]></title><description><![CDATA[<p>Nein, ich meinte vom Sinn her.<br />
Ausgabe ohne Ausgabe ist irgendwie sinnfrei.</p>
<p>Edit: Übrigens finde ich es blöd, dass nach der ersten Ausgabe ein anderer Operator aufgerufen wird. Die operator Funktion sollte besser MyClass&amp; zurückliefern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318715</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 26 Apr 2013 13:34:40 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 13:36:19 GMT]]></title><description><![CDATA[<p>Was spricht gegen</p>
<pre><code class="language-cpp">operator std::ostream&amp;() { return file; }
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318718</guid><dc:creator><![CDATA[opi]]></dc:creator><pubDate>Fri, 26 Apr 2013 13:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 13:51:18 GMT]]></title><description><![CDATA[<p>Das, was immer gegen operator T spricht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318726</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 26 Apr 2013 13:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 13:51:54 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Nein, ich meinte vom Sinn her.<br />
Ausgabe ohne Ausgabe ist irgendwie sinnfrei.</p>
<p>Edit: Übrigens finde ich es blöd, dass nach der ersten Ausgabe ein anderer Operator aufgerufen wird. Die operator Funktion sollte besser MyClass&amp; zurückliefern.</p>
</blockquote>
<p>Ein std::ofstream steht für eine Datei. Da erfolgt keine sichtbare Ausgabe.</p>
<p>Wenn man MyClass&amp; zurückgibt, dann hätte man ja nach jedem Operatoraufruf eine weitere Indirektion. Außerdem implementiert std::ofstream schon alles, also kann man auch an std::ofstream die weitere Verarbeitung abgeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318727</guid><dc:creator><![CDATA[ghjghjgh]]></dc:creator><pubDate>Fri, 26 Apr 2013 13:51:54 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 13:52:52 GMT]]></title><description><![CDATA[<p>opi schrieb:</p>
<blockquote>
<p>Was spricht gegen</p>
<pre><code class="language-cpp">operator std::ostream&amp;() { return file; }
</code></pre>
<p>?</p>
</blockquote>
<p>Das macht nicht das gesuchte, dafür aber jede Menge anderes, was man nicht will.</p>
<pre><code>class MyClass
{
  std::fstream file;
public:
  operator std::ostream&amp;() { return file; }
};

void bar(std::ostream&amp; o);

int main()
{
  MyClass foo;
  foo &lt;&lt; &quot;Blah!&quot;; // Geht nicht
  bar(foo);       // Geht! Gewollt?
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2318729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318729</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 26 Apr 2013 13:52:52 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 14:07:00 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<pre><code>foo &lt;&lt; &quot;Blah!&quot;; // Geht nicht
</code></pre>
</blockquote>
<p>Das ließe sich sogar noch per using-Deklaration oder -Direktive reparieren. Spätestens bei</p>
<pre><code class="language-cpp">foo &lt;&lt; 42;
</code></pre>
<p>ist allerdings nichts mehr zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318733</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 26 Apr 2013 14:07:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 14:10:14 GMT]]></title><description><![CDATA[<p>ghjghjgh schrieb:</p>
<blockquote>
<p>Wenn man MyClass&amp; zurückgibt, dann hätte man ja nach jedem Operatoraufruf eine weitere Indirektion. Außerdem implementiert std::ofstream schon alles, also kann man auch an std::ofstream die weitere Verarbeitung abgeben.</p>
</blockquote>
<p>Die Indirektion wird sowieso wegoptimiert. Dafür ist soetwas nicht möglich:</p>
<pre><code>class Foo
{
private:
     std::ostream&amp; _o;

public:
     template&lt;typename T&gt;
     Foo&amp; operator&lt;&lt;(T const&amp; v)
     {
         _o &lt;&lt; v;
         return *this;
     }

     void complete();
};

...

Foo foo;
(foo &lt;&lt; 12.0f &lt;&lt; &quot;abc&quot; &lt;&lt; 12).complete();
</code></pre>
<p>Außerdem kann der std::ostream ein Implementierungsdetail sein, das man nicht umbedingt nach außen tragen möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318736</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Fri, 26 Apr 2013 14:10:14 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse: Stream-Operator überladen on Fri, 26 Apr 2013 14:49:15 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<pre><code>_o &lt;&lt; v;
</code></pre>
</blockquote>
<p>Und das hier meinte ich mit &quot;da fehlt was&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2318757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2318757</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 26 Apr 2013 14:49:15 GMT</pubDate></item></channel></rss>