<?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[Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot;]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte eine Klasse schreiben, deren Instanzen ich per &lt;&lt; mit Daten füttern kann, d.h.:</p>
<pre><code>myClass &lt;&lt; &quot;input&quot;
</code></pre>
<p>sollte möglich sein.<br />
Ich habe jetzt nach Operator overloading gegoogelt, und ein paar tutorials gefunden, anhand derer ich schon erfolgreich:</p>
<pre><code>cout &lt;&lt; myClass
und
cin &gt;&gt; myClass
</code></pre>
<p>hinkriege, aber wenn ich obigen versuche, kriege ich:</p>
<pre><code>Compare.C:326: error: no match for 'operator&lt;&lt;' in 'myClass&lt;&lt; &quot;bla&quot;'
</code></pre>
<p>Obwohl ich</p>
<pre><code>ostream&amp; operator&lt;&lt;(ostream&amp; os, myClass&amp; c)
{
    cout &lt;&lt;&quot;hello&quot;;
    return os; //Always return stream object.
}
</code></pre>
<p>definiert habe. (der im Moment erstmal nur cout machen soll, damit ich sehe, ob er überhaupt aufgerufen wird.</p>
<p>Geht myClass &lt;&lt;&quot;info&quot; einfach nicht?<br />
Grüße,<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233032/operator-overloading-myclass-lt-lt-quot-input-quot</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 03:11:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233032.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Jan 2009 13:21:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot; on Fri, 30 Jan 2009 13:42:37 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte eine Klasse schreiben, deren Instanzen ich per &lt;&lt; mit Daten füttern kann, d.h.:</p>
<pre><code>myClass &lt;&lt; &quot;input&quot;
</code></pre>
<p>sollte möglich sein.<br />
Ich habe jetzt nach Operator overloading gegoogelt, und ein paar tutorials gefunden, anhand derer ich schon erfolgreich:</p>
<pre><code>cout &lt;&lt; myClass
und
cin &gt;&gt; myClass
</code></pre>
<p>hinkriege, aber wenn ich obigen versuche, kriege ich:</p>
<pre><code>Compare.C:326: error: no match for 'operator&lt;&lt;' in 'myClass&lt;&lt; &quot;bla&quot;'
</code></pre>
<p>Obwohl ich</p>
<pre><code>ostream&amp; operator&lt;&lt;(ostream&amp; os, myClass&amp; c)
{
    cout &lt;&lt;&quot;hello&quot;;
    return os; //Always return stream object.
}
</code></pre>
<p>definiert habe. (der im Moment erstmal nur cout machen soll, damit ich sehe, ob er überhaupt aufgerufen wird.</p>
<p>Geht myClass &lt;&lt;&quot;info&quot; einfach nicht?<br />
Grüße,<br />
Thomas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1654996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1654996</guid><dc:creator><![CDATA[elfstone]]></dc:creator><pubDate>Fri, 30 Jan 2009 13:42:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot; on Fri, 30 Jan 2009 13:37:46 GMT]]></title><description><![CDATA[<p>Was ist TMDebug?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655018</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Fri, 30 Jan 2009 13:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot; on Fri, 30 Jan 2009 13:40:18 GMT]]></title><description><![CDATA[<p>elfstone schrieb:</p>
<blockquote>
<pre><code>ostream&amp; operator&lt;&lt;(ostream&amp; os, TMDebug&amp; c)
{
    cout &lt;&lt;os;
    return os; //Always return stream object.
}
</code></pre>
</blockquote>
<p>cout &lt;&lt;os; ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655020</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Fri, 30 Jan 2009 13:40:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot; on Fri, 30 Jan 2009 13:42:14 GMT]]></title><description><![CDATA[<p>Uh, sorry.. replaced TMDebug with myClass and cout &lt;&lt; os with cout &lt;&lt; &quot;hello&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655024</guid><dc:creator><![CDATA[elfstone]]></dc:creator><pubDate>Fri, 30 Jan 2009 13:42:14 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot; on Fri, 30 Jan 2009 13:48:44 GMT]]></title><description><![CDATA[<p>Was du definiert hast ist der Operator, der als Linkes Argument eien ostream und als rechtes deine Klasse nimmt. Was du aber scheinbar definieren willst, ist ein operator, der als linkes Argument deine Klasse hat und als rechtes z.B. einen const char*.<br />
Den operator könntest du entweder frei oder als Klassenmember definieren, allerdings kommst du damit nicht weit: sobald du etwas anderes darin &quot;ausgeben&quot; möchtest, fehlt wieder ein entsprechender Operator.</p>
<p>Lösugn des Problem wäre vermutlich, eine Klasse von ostream abzuleiten und/oder eine weitere Klasse von streambuf abzuleiten, da vermutlich dort erst die Änderungen vorgenommen werden müssen, die deine Klasse von einem ostream uterscheiden.<br />
Evtl. hilft das hier weiter:</p>
<p><a href="http://www.angelikalanger.com/Articles/C++Report/IOStreamsDerivation/IOStreamsDerivation.html" rel="nofollow">http://www.angelikalanger.com/Articles/C++Report/IOStreamsDerivation/IOStreamsDerivation.html</a></p>
<p>sonst google &quot;derive streambuf&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1655033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655033</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 30 Jan 2009 13:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Operator Overloading MyClass &amp;lt;&amp;lt; &amp;quot;input&amp;quot; on Fri, 30 Jan 2009 13:53:33 GMT]]></title><description><![CDATA[<p>elfstone schrieb:</p>
<blockquote>
<p>ich möchte eine Klasse schreiben, deren Instanzen ich per &lt;&lt; mit Daten füttern kann</p>
</blockquote>
<p>Hallo Thomas,</p>
<p>diese Klasse gibt es schon, es ist std::ostream. Du brauchst lediglich einen eigenen Streambuf um die Daten auch aufzunehmen. Das sieht so aus:</p>
<pre><code class="language-cpp">#include &lt;streambuf&gt;
#include &lt;iostream&gt;

class MyBuf : public std::streambuf
{
protected:
    virtual int_type overflow( int_type m = traits_type::eof() )
    {
        if( !traits_type::eq_int_type( m, traits_type::eof() ) )
        {
            // hier kommen die Zeichen rein
            const char c = traits_type::to_char_type( m );
            std::cout &lt;&lt; c &lt;&lt; '|'; // zur Demo mit '|' ausgeben
        }
        return traits_type::not_eof( m );
    }
};
class MyClass : public std::ostream // das ist nur ein Wrapper, der ostream + MyBuf zusamenfasst
{
public:
    typedef std::ostream base_type;
    MyClass()
        : base_type( &amp;m_sb )
        , m_sb()
    {}
private:
    MyBuf m_sb;
};

int main()
{
    MyClass myClass;
    myClass &lt;&lt; &quot;Test: &quot; &lt;&lt; 3.14 &lt;&lt; std::endl;
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1655040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1655040</guid><dc:creator><![CDATA[Werner_logoff]]></dc:creator><pubDate>Fri, 30 Jan 2009 13:53:33 GMT</pubDate></item></channel></rss>