<?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[überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr...]]></title><description><![CDATA[<p>hallo,</p>
<p>ich hab einen überladenen &lt;&lt; operator</p>
<pre><code class="language-cpp">std::ostream &amp;operator &lt;&lt; ( std::ostream &amp;out, const osg::GraphicsContext::ScreenSettings &amp;ss )
{
	std::streamsize p = out.precision( 3 );
	out &lt;&lt; ss.width &lt;&lt; &quot;x&quot; &lt;&lt; ss.height &lt;&lt; &quot;x&quot; &lt;&lt; ss.colorDepth &lt;&lt; &quot;b, &quot; &lt;&lt; ss.refreshRate &lt;&lt; &quot; Hz&quot;;
	out.precision( p );

	return out;
}
</code></pre>
<p>und verwende den</p>
<pre><code class="language-cpp">std::cout &lt;&lt; &quot;initializing window with &quot; &lt;&lt; targetSettings 
		&lt;&lt; &quot;, &quot; &lt;&lt; ( this-&gt;isFullscreen ? &quot;fullscreen&quot; : &quot;windowed&quot; ) &lt;&lt; std::endl;
</code></pre>
<p>bisher hat das immer geklappt, jetzt hab ich gerade meinen code (an völlig anderen stellen) etwas umstrukturiert und wie aus heiterem himmel funktioniert das nicht mehr.</p>
<p>msvc9.0 schrieb:</p>
<blockquote>
<p>Error 1 error C2679: binary '&lt;&lt;' : no operator found which takes a right-hand operand of type 'osg::GraphicsContext::ScreenSettings' (or there is no acceptable conversion) h:\myprojectdir\source\renderer.cpp 127</p>
</blockquote>
<p>hat wer 'ne spontane idee was da falsch sein kann? ich hab nicht den hauch einer ahnung was da los ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238390/überladener-operator-lt-lt-funktioniert-nicht-mehr</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:22:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238390.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Apr 2009 19:19:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Thu, 09 Apr 2009 19:21:25 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich hab einen überladenen &lt;&lt; operator</p>
<pre><code class="language-cpp">std::ostream &amp;operator &lt;&lt; ( std::ostream &amp;out, const osg::GraphicsContext::ScreenSettings &amp;ss )
{
	std::streamsize p = out.precision( 3 );
	out &lt;&lt; ss.width &lt;&lt; &quot;x&quot; &lt;&lt; ss.height &lt;&lt; &quot;x&quot; &lt;&lt; ss.colorDepth &lt;&lt; &quot;b, &quot; &lt;&lt; ss.refreshRate &lt;&lt; &quot; Hz&quot;;
	out.precision( p );

	return out;
}
</code></pre>
<p>und verwende den</p>
<pre><code class="language-cpp">std::cout &lt;&lt; &quot;initializing window with &quot; &lt;&lt; targetSettings 
		&lt;&lt; &quot;, &quot; &lt;&lt; ( this-&gt;isFullscreen ? &quot;fullscreen&quot; : &quot;windowed&quot; ) &lt;&lt; std::endl;
</code></pre>
<p>bisher hat das immer geklappt, jetzt hab ich gerade meinen code (an völlig anderen stellen) etwas umstrukturiert und wie aus heiterem himmel funktioniert das nicht mehr.</p>
<p>msvc9.0 schrieb:</p>
<blockquote>
<p>Error 1 error C2679: binary '&lt;&lt;' : no operator found which takes a right-hand operand of type 'osg::GraphicsContext::ScreenSettings' (or there is no acceptable conversion) h:\myprojectdir\source\renderer.cpp 127</p>
</blockquote>
<p>hat wer 'ne spontane idee was da falsch sein kann? ich hab nicht den hauch einer ahnung was da los ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693702</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 09 Apr 2009 19:21:25 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Thu, 09 Apr 2009 19:25:09 GMT]]></title><description><![CDATA[<p>Zeig mal her, was du geändet hast. (Hast du das auch mal probiert rückgängig zu machen?).</p>
<p>Ansonsten auch einfach mal probieren neu erstellen. Das funktionirt meistens, wenn etwas plötzlich ein Fehler gibt, obwohl man dort nix geändert hat..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693706</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 09 Apr 2009 19:25:09 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Thu, 09 Apr 2009 19:30:12 GMT]]></title><description><![CDATA[<p>klammern und semikoli obendrüber sind alle noch korrekt?!</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693709</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 09 Apr 2009 19:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Thu, 09 Apr 2009 19:53:44 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<p>Zeig mal her, was du geändet hast. (Hast du das auch mal probiert rückgängig zu machen?).</p>
</blockquote>
<p>naja, das kann ich hier nicht posten, das umfasst das halbe projekt... rückgängig machen geht nicht mehr, das war zu viel. aber das waren änderungen, die die klassen und operatoren, die hier im spiel sind nicht im entferntesten betreffen. achso, doch, die klasse, in deren methode ich den std::cout &lt;&lt; bla code drinnen hab, der jetzt nicht mehr kompiliert, war vorher 'ne nested class, jetzt ist sie keine mehr. aber das hat ja auch nichts damit zu tun.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>Ansonsten auch einfach mal probieren neu erstellen.</p>
</blockquote>
<p>meinst du damit 'nen rebuild? hab ich schon versucht, auch ein clean project bzw. neustart von msvs. wenn ichs neu reintippen würd, würd ich die funktion wieder genauso schreiben, daher versprech' ich mir dadurch nicht viel erfolg... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>unskilled schrieb:</p>
<blockquote>
<p>klammern und semikoli obendrüber sind alle noch korrekt?!</p>
</blockquote>
<p>jap, der rest baut und läuft problemlos. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title="=\"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693721</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 09 Apr 2009 19:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Thu, 09 Apr 2009 20:13:28 GMT]]></title><description><![CDATA[<p>dann wirst du wohl nicht drum rumkommen, im main-file bestimmte dinge auszukommentieren und dann nach und nach erst die includes zuzuschalten - dann wirst du merken, in welchem file du iwas vergessen hast - und das hast du definitiv ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693733</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 09 Apr 2009 20:13:28 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Thu, 09 Apr 2009 21:33:00 GMT]]></title><description><![CDATA[<p>also ich hab rausgefunden, dass es daran liegt, dass ich das hier inkludiere:</p>
<pre><code class="language-cpp">#ifndef __HPTIME_H__
#define __HPTIME_H__

#include &lt;ostream&gt;

#include &lt;windows.h&gt;

namespace bla
{
	class HPTime
	{
	private:
		...
	public:
		friend HPTime operator - ( HPTime &amp;left, HPTime &amp;right );
		friend std::ostream &amp;operator &lt;&lt; ( std::ostream &amp;out, const HPTime &amp;time );
	};

	inline HPTime operator - ( HPTime &amp;left, HPTime &amp;right )					{	return HPTime( left.startCntr.QuadPart - right.startCntr.QuadPart );	}
	inline std::ostream &amp;operator &lt;&lt; ( std::ostream &amp;out, const HPTime &amp;time )	{	out &lt;&lt; time.getTimeMilliSeconds() &lt;&lt; &quot;ms&quot;;	return out;					}
}

#endif
</code></pre>
<p>wenn ich den operator &lt;&lt;, der in diesem file definiert ist, auskommentiere, dann funktioniert der andere. fällt euch da was auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693750</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693750</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Thu, 09 Apr 2009 21:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Fri, 10 Apr 2009 12:12:47 GMT]]></title><description><![CDATA[<p>iko79 schrieb:</p>
<blockquote>
<p>wenn ich den operator &lt;&lt;, der in diesem file definiert ist, auskommentiere, dann funktioniert der andere. fällt euch da was auf?</p>
</blockquote>
<p>Jopp - da fehlt ne Klammer... Aber das hatte ich dir schon davor gesagt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693928</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 10 Apr 2009 12:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Fri, 10 Apr 2009 12:18:27 GMT]]></title><description><![CDATA[<p>erm... wo denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693930</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 10 Apr 2009 12:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Fri, 10 Apr 2009 14:56:37 GMT]]></title><description><![CDATA[<p>o sry - hatte die scrollbar net gesehen, der kam ja noch x)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693994</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 10 Apr 2009 14:56:37 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Fri, 10 Apr 2009 15:04:42 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>o sry - hatte die scrollbar net gesehen, der kam ja noch x)</p>
</blockquote>
<p><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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1693999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1693999</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 10 Apr 2009 15:04:42 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Fri, 10 Apr 2009 18:14:56 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>: ie hat es auf 125% gezoomt und dadurch war die klammer gerade so nicht mehr zu sehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> ^^</p>
<p>dann poste ma die komplette datei - oder guck davor mal, ob du vll ausversehen irgend nen bezeichner gewählt hast, der in der winapi durch nen makro scho vergeben ist</p>
<p>oder du guckst mal, ob du versehentlich die gleichen include-guards verwendet hast, weil du iwas per copy&amp;paste übernommen hast und vergessen hast, die zu ändern...</p>
<p>mehr ideen hab ich jz au net</p>
<p>btw:<br />
auf so ne include-guards: <code>__HPTIME_H__</code> solltest du verzichten und lieber bezeichner ohne unterstrich(e) am anfang verwenden, da die für den compiler resveriert sind...</p>
<p>bb</p>
<p>PS: <code>inline</code> musst du bei sowas net mehr davorschreiben und op- nutzt eigtl intern IMMER den op-= - sieht dann so aus:</p>
<pre><code class="language-cpp">HPTime operator - (const HPTime &amp;left, const HPTime &amp;right) //const !
{
  HPTime tmp (left);
  tmp -= right;
  return tmp;
}
</code></pre>
<p>natürlich musst du deiner klasse dann auch nen operator -= spendieren, aber das sollte net so das prob sein und der sollte eigtl so und so schon existieren...</p>
<p>je nach geschmack kannst du die letzten beiden zeilen auch zusammenfassen<br />
was zwar auch noch unter geschmack fällt, aber eigtl immer so gemacht wird: die parameter heißen lhs und rhs (left hand side / right hand side)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694106</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 10 Apr 2009 18:14:56 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Fri, 10 Apr 2009 22:36:31 GMT]]></title><description><![CDATA[<p>ich glaub inzwischen, dass das ein scope-problem ist und der compiler versucht, auf einen komplett anderen datentyp zu casten... mir ist da nämlich vorhin an anderer stelle sowas ähnliches aufgefallen. muss mir das morgen nochmal genauer ansehen.</p>
<p>und, hey, danke für das</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>auf so ne include-guards: __HPTIME_H__ solltest du verzichten</p>
</blockquote>
<p>und das</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>inline musst du bei sowas net mehr davorschreiben</p>
</blockquote>
<p>und das</p>
<p>unskilled schrieb:</p>
<blockquote>
<p>op- nutzt eigtl intern IMMER den op-=</p>
</blockquote>
<p>!<br />
wusst ich nicht, thx! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694192</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694192</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Fri, 10 Apr 2009 22:36:31 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Sat, 11 Apr 2009 03:02:14 GMT]]></title><description><![CDATA[<p>np - für sowas ist das forum ja da <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694230</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Sat, 11 Apr 2009 03:02:14 GMT</pubDate></item><item><title><![CDATA[Reply to überladener operator &amp;lt;&amp;lt; funktioniert nicht mehr... on Sat, 11 Apr 2009 15:38:19 GMT]]></title><description><![CDATA[<p>also ich hatte die operatoren ja erst im namespace bla. ich hätte jetzt versucht, die in den globalen namespace herauszuziehen, schaff' das aber nicht ganz.</p>
<p>wenn ich das so anschreib</p>
<pre><code class="language-cpp">namespace bla
{
	class HPTime
	{
		...

		friend bla::HPTime operator - ( bla::HPTime &amp;left, bla::HPTime &amp;right );
		friend std::ostream &amp;operator &lt;&lt; ( std::ostream &amp;out, const bla::HPTime &amp;time );
	};
}

inline bla::HPTime operator - ( bla::HPTime &amp;left, bla::HPTime &amp;right )	
	{	return bla::HPTime( left.startCntr.QuadPart - right.startCntr.QuadPart );	}
inline std::ostream &amp;operator &lt;&lt; ( std::ostream &amp;out, const bla::HPTime &amp;time )	
	{	out &lt;&lt; time.getTimeMilliSeconds() &lt;&lt; &quot;ms&quot;;	return out;							}
</code></pre>
<p>dann beschwert sich der compiler, dass die operatoren nicht auf private members zugreifen dürfen. (???) versteh ich nicht ganz, die signatur ist ja komplett gleich. meine annahme war jetzt, dass ich den bereichsauflösungsoperator für die friend deklarationen angeben muss. das einzige, das ich mir als syntaktisch korrekt vorstellen kann ist sowas hier:</p>
<pre><code class="language-cpp">friend bla::HPTime ::operator - ( bla::HPTime &amp;left, bla::HPTime &amp;right );
</code></pre>
<p>dann bekomm' ich allerdings den fehler hier: &quot;missing type specifier - int assumed.&quot; wie geb' ich 'nen bereichsauflösungsoperator für operatoren an?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1694496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1694496</guid><dc:creator><![CDATA[iko79]]></dc:creator><pubDate>Sat, 11 Apr 2009 15:38:19 GMT</pubDate></item></channel></rss>