<?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[Operatorenüberladung]]></title><description><![CDATA[<p>Ich habe hier eine Klasse die Texte parst.<br />
Dabei soll die Handhabung zur Übergabe der Texte in etwa so aussehen:</p>
<pre><code>int main()
{
   instanz meineKlasse;

   while (cin &gt;&gt; instanz)
   {
      // tue etwas
   }
}
</code></pre>
<p>Wie muss ich das jetzt genau machen? Natürlich den operator&gt;&gt; für meine Klasse überladen, aber weiter? Wäre um jede Hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313898/operatorenüberladung</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 20:57:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313898.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Feb 2013 12:58:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 12:58:49 GMT]]></title><description><![CDATA[<p>Ich habe hier eine Klasse die Texte parst.<br />
Dabei soll die Handhabung zur Übergabe der Texte in etwa so aussehen:</p>
<pre><code>int main()
{
   instanz meineKlasse;

   while (cin &gt;&gt; instanz)
   {
      // tue etwas
   }
}
</code></pre>
<p>Wie muss ich das jetzt genau machen? Natürlich den operator&gt;&gt; für meine Klasse überladen, aber weiter? Wäre um jede Hilfe dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298594</guid><dc:creator><![CDATA[n000000b]]></dc:creator><pubDate>Wed, 13 Feb 2013 12:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:04:18 GMT]]></title><description><![CDATA[<p>Wie und weiter?</p>
<p>Du überlädst den operator &gt;&gt; mit deinem Inputstream und machst dann deine Textverarbeitungen. So sieht das in etwa aus:</p>
<pre><code>class MyClass
{
     int myMember;
public:
     friend inline std::istream&amp; operator&gt;&gt;(std::istream&amp; is, MyClass&amp; x)
     {
          // hier arbeiten, wie z.B.
          is &gt;&gt; myMember;
          return is;
     }
};
</code></pre>
<p>Nimms mir nicht übel, aber ich glaube du solltest das eher lassen, das ist noch nicht auf deinem Wissensniveau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298595</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:13:02 GMT]]></title><description><![CDATA[<p>danke, nur wieso deklarierst du die funktion als friend? ich kann da jetzt keine vorteile sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298599</guid><dc:creator><![CDATA[n000000b]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:13:02 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:17:17 GMT]]></title><description><![CDATA[<p>Weil er mit der Funktion auf einen Member zugreift der privat ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298605</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:17:17 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:18:46 GMT]]></title><description><![CDATA[<p>MarcoYolo schrieb:</p>
<blockquote>
<p>Weil er mit der Funktion auf einen Member zugreift der privat ist?</p>
</blockquote>
<p>auf den die Methode aber sowieso Zugriff hat, wenn sie - wie hier - zu der Klasse gehört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298606</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:18:46 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:19:24 GMT]]></title><description><![CDATA[<p>wo denn?</p>
<p>Edit:<br />
eben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298607</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:19:24 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:19:19 GMT]]></title><description><![CDATA[<p>ok, frage besser gestellt: gibt es irgendeinen grund die funktion als friend zu deklarieren wenn ich das inline nicht benötige?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298608</guid><dc:creator><![CDATA[n000000b]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:19:19 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:29:05 GMT]]></title><description><![CDATA[<p>n000000b schrieb:</p>
<blockquote>
<p>ok, frage besser gestellt: gibt es irgendeinen grund die funktion als friend zu deklarieren wenn ich das inline nicht benötige?</p>
</blockquote>
<p>Ja! Das hat nichts mit inline oder nicht zu tun. Das inline ist hier extra. Daher gilt die alte Antwort:</p>
<p>MarcoYolo schrieb:</p>
<blockquote>
<p>Weil er mit der Funktion auf einen Member zugreift der privat ist?</p>
</blockquote>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>auf den die Methode aber sowieso Zugriff hat, wenn sie - wie hier - zu der Klasse gehört?</p>
</blockquote>
<p>Gehört sie aber nicht. Das ist mit dieser Schreibweise keine Memberfunktion, sondern eine freie Funktion im Namespace der Klasse. Merkst du schon an der Schreibweise, denn was wäre hier denn das this-Objekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298612</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:30:01 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>MarcoYolo schrieb:</p>
<blockquote>
<p>Weil er mit der Funktion auf einen Member zugreift der privat ist?</p>
</blockquote>
<p>auf den die Methode aber sowieso Zugriff hat, wenn sie - wie hier - zu der Klasse gehört?</p>
</blockquote>
<p>Welche Methode? Ich sehe keine. Ich sehe nur eine freie Funktion, die eben genau deshalb (KEINE Methode aber private-Zugriff) zum <s>potentiellen Vergewaltiger</s> friend ernannt wurde.</p>
<p>@n000000b: Schau mal oben ins Magazin, da gibts einen Artikel zur Operatorüberladung - der behandelt auch op&gt;&gt;. Und vielleicht (nur so als Anregung) solltest du dir einen anderen Namen überlegen, wenn du hier Fragen stellst - dann hast du auch Chancen, ernst genommen zu werden <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="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298613</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:32:55 GMT]]></title><description><![CDATA[<p>Man kann es auch mit einer Gegenfrage beantworten:<br />
Wie würde die Syntax aussehen wenn man versucht den Rechts-Shift-Operator mit zwei Argumenten aufzurufen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298615</guid><dc:creator><![CDATA[MarcoYolo]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:32:55 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:38:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>auf den die Methode aber sowieso Zugriff hat, wenn sie - wie hier - zu der Klasse gehört?</p>
</blockquote>
<p>Gehört sie aber nicht. Das ist mit dieser Schreibweise keine Memberfunktion, sondern eine freie Funktion im Namespace der Klasse. Merkst du schon an der Schreibweise, denn was wäre hier denn das this-Objekt?</p>
</blockquote>
<p>ah cool, wieder was gelernt, danke. Wusste noch gar nicht, dass sowas geht.</p>
<p>MarcoYolo schrieb:</p>
<blockquote>
<p>Man kann es auch mit einer Gegenfrage beantworten:<br />
Wie würde die Syntax aussehen wenn man versucht den Rechts-Shift-Operator mit zwei Argumenten aufzurufen?</p>
</blockquote>
<p>hm... so:</p>
<pre><code class="language-cpp">anObject.operator&gt;&gt;(myStream, myObject);
</code></pre>
<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="😃"
    /></p>
<p>und ja, ich habe verstanden, worauf du hinauswolltest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298619</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:38:07 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:39:57 GMT]]></title><description><![CDATA[<p>Hä?</p>
<p>Normalerweise schreibt man folgendes:</p>
<pre><code>class Foo
{
	int x;
};

std::istream&amp; operator&gt;&gt;(std::istream&amp; is, Foo &amp; o)
{
	// .. blabla
	return is;
}
</code></pre>
<p>Da man aber jetzt nicht auf die Member zugreifen kann, gibt es saubere 2 Möglichkeiten:<br />
Nummer1:</p>
<pre><code>class Foo
{
	int x;

public:
	void read(std::istream &amp; is)
	{
		is &gt;&gt; this-&gt;x;
	}
};

std::istream&amp; operator&gt;&gt;(std::istream&amp; is, Foo &amp; o)
{
	o.read(is);
	return is;
}
</code></pre>
<p>Oder halt das hier:</p>
<pre><code>class Foo
{
	int x;

public:
	friend std::istream&amp; operator&gt;&gt;(std::istream&amp; is, Foo &amp; o);
};

std::istream&amp; operator&gt;&gt;(std::istream&amp; is, Foo &amp; o)
{
	is &gt;&gt; o.x;
	return is;
}
</code></pre>
<p>Den Zugriff hier extra über Getter/Setter zu steuern halte ich in solchen Fällen für Schwachsinn.</p>
<p>Das Inline im ersten Beispiel war alleine dazu da, etwaige Linkerfehler (Mehrfachdefinition) auszuhebeln, so aus Spass.</p>
<p>Und wie z.B. Pumuckl schon sagte, es gibt eine Klasse und eine freie Funktion, die aber ein Freund der Klasse ist. Nix mit Memberfunktion...</p>
<p>Einen Rightshift Operator mit 2(bzw. 3 wie mein Vorredner gerne hätte) Parametern gibt es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298621</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298621</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:43:55 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>daddy_felix schrieb:</p>
<blockquote>
<p>auf den die Methode aber sowieso Zugriff hat, wenn sie - wie hier - zu der Klasse gehört?</p>
</blockquote>
<p>Gehört sie aber nicht. Das ist mit dieser Schreibweise keine Memberfunktion, sondern eine freie Funktion im Namespace der Klasse.</p>
</blockquote>
<p>Jo - aber wo geht dann dieser Zugriff auf 'myMember' hin:</p>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<pre><code>class MyClass
{
     int myMember;
public:
     friend inline std::istream&amp; operator&gt;&gt;(std::istream&amp; is, MyClass&amp; x)
     {
          // hier arbeiten, wie z.B.
          is &gt;&gt; myMember;
          return is;
     }
};
</code></pre>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2298623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298623</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:43:55 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:51:35 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Jo - aber wo geht dann dieser Zugriff auf 'myMember' hin:</p>
</blockquote>
<p>Nirgendwohin, das compiliert nämlich nicht, Flüchtigkeitsfehler von Skym0sh0. <code>x.myMember</code> muss es heißen.</p>
<p>P.S.: Dieser Fehler passiert mir übrigens auch dauernd, egal wo genau ich den Operator definiere. Er fühlt sich einfach wie ein Klassenmember an. Wenn ich mal eine obskure Programmiersprache entwickele, dann werden Ausdrücke von links nach rechts ausgewertet und man schreibt dann</p>
<pre><code>wert3 &lt;&lt; wert2 &lt;&lt; wert1 &lt;&lt; cin;
</code></pre>
<p>Ganz intuitiv <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2298628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298628</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:51:35 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 13:49:33 GMT]]></title><description><![CDATA[<p>Ups, verschrieben. War ungetestet und aus dem handgelenk geschüttelt.</p>
<p>Das ist falsch so, das muss sich natürlich auf das myMember von x beziehen:</p>
<pre><code>class MyClass
{
     int myMember;
public:
     friend inline std::istream&amp; operator&gt;&gt;(std::istream&amp; is, MyClass&amp; x)
     {
          // hier arbeiten, wie z.B.
          is &gt;&gt; x.myMember;
          return is;
     }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2298631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298631</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 13 Feb 2013 13:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 14:14:23 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Ups, verschrieben. War ungetestet und aus dem handgelenk geschüttelt.</p>
<p>Das ist falsch so, das muss sich natürlich auf das myMember von x beziehen:</p>
</blockquote>
<p>dann ist es auch schon eher als freie Funktion erkennbar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298643</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Wed, 13 Feb 2013 14:14:23 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 14:55:21 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>[...]</p>
<p>P.S.: Dieser Fehler passiert mir übrigens auch dauernd, egal wo genau ich den Operator definiere. Er fühlt sich einfach wie ein Klassenmember an.</p>
</blockquote>
<p>Tja, was soll ich sagen ...<br />
Ohne Deinen Hinweis, dass es sich um eine freie Funktion im Namespace der Klasse handelt, hätte ich steif und fest behauptet, dass es eine Memberfunktion/Methode ist, weil sie eben in der Klasse definiert ist ...</p>
<p>Wodurch wird sie 'frei'? Durch das Schlüsselwort 'friend'?<br />
Und kann man sie einfach wie gewohnt nutzen, obwohl sie in einem Namespace liegt? Wird das durch die für mich viel zu undurchsichtigen Namelookup-Regeln gewährleistet, weil ja ein Objekt vom Typ der Klasse beteiligt ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298660</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 13 Feb 2013 14:55:21 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 15:46:05 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Wodurch wird sie 'frei'? Durch das Schlüsselwort 'friend'?</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Und kann man sie einfach wie gewohnt nutzen, obwohl sie in einem Namespace liegt? Wird das durch die für mich viel zu undurchsichtigen Namelookup-Regeln gewährleistet, weil ja ein Objekt vom Typ der Klasse beteiligt ist?</p>
</blockquote>
<p>Ja.</p>
<p>Mal die relevanten Stellen im Standard (Kapitelangaben C++11, in C++98 ist es nicht (oder nicht großartig) anders):</p>
<p>11.3,6-7 schrieb:</p>
<blockquote>
<p>A function can be defined in a friend declaration of a class if and only if the class is a non-local class (9.8),<br />
the function name is unqualified, and the function has namespace scope.<br />
Example:</p>
<pre><code>class M {
  friend void f() { }
// definition of global f, a friend of M,
// not the definition of a member function
};
</code></pre>
<p>Such a function is implicitly <code>inline</code> . A friend function defined in a class is in the (lexical) scope of the<br />
class in which it is defined. A friend function defined outside the class is not (3.4.1).</p>
</blockquote>
<p>Wir sehen auch: Das inline war überflüssig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298674</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 15:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 16:03:42 GMT]]></title><description><![CDATA[<p>Okay, dann hab ich das zumindest im Nachhinein ja richtig verstanden.<br />
Das hier:</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>A friend function defined in a class is in the (lexical) scope of the class in which it is defined. A friend function defined outside the class is not (3.4.1).</p>
</blockquote>
<p>ist dann nicht von praktischer Relevanz, weil ich das als Nutzer der Klasse oder der Funktion nicht bemerke, sondern unabhängig davon (scope of the class, oder eben auch nicht) auf die gleiche Weise benutzen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298679</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298679</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 13 Feb 2013 16:03:42 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 16:53:27 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>ist dann nicht von praktischer Relevanz, weil ich das als Nutzer der Klasse oder der Funktion nicht bemerke, sondern unabhängig davon (scope of the class, oder eben auch nicht) auf die gleiche Weise benutzen kann?</p>
</blockquote>
<p>Meistens ist es egal.<br />
Murphys Gesetz: Irgendwann wird natürlich gerade der Fall eintreten, mit dem man nie rechnet und du möchtest einen Zeiger oder sonst etwas auf diese Funktion, wobei es dann schiefgeht:</p>
<pre><code>#include &lt;iostream&gt;

class Foo
{
  friend std::ostream&amp; func(std::ostream &amp;out, const Foo&amp;){ return out; }
};

class Bar
{
  friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const Bar&amp;);
};

class FooBar
{
  friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const FooBar&amp;);
};

std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const Bar&amp;){ return out; }
std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const FooBar&amp;){ return out; }

int main()
{
  std::ostream&amp; (*bar_ptr)(std::ostream &amp;out, const Bar&amp;)
    = operator&lt;&lt;;    // Geht
  std::ostream&amp; (*foobar_ptr)(std::ostream &amp;out, const FooBar&amp;)
    = operator&lt;&lt;;    // Dito. Ist schließlich das gleiche, ich wollte bloß die 
                     // Überladungsauflösung demonstrieren
  std::ostream&amp; (*foo_ptr)(std::ostream &amp;out, const Foo&amp;)
    = operator&lt;&lt;;    // Kann Funktion nicht finden
}
</code></pre>
<p>Was mich nun jedoch in die etwas unrühmliche Situation bringt, dass ich selber nicht weiß, wie man jemals an einen Zeiger auf eine so definierte Funktion kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298697</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 16:53:27 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 19:01:55 GMT]]></title><description><![CDATA[<p>Du kannst func nicht finden, indem Du nach &lt;&lt; suchst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2298712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298712</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 13 Feb 2013 19:01:55 GMT</pubDate></item><item><title><![CDATA[Reply to Operatorenüberladung on Wed, 13 Feb 2013 19:19:04 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Du kannst func nicht finden, indem Du nach &lt;&lt; suchst?</p>
</blockquote>
<p>Ups, eine Zeile habe ich nicht geändert, vorm posten. So soll das Beispiel aussehen:</p>
<pre><code>#include &lt;iostream&gt;

class Foo
{
  friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const Foo&amp;){ return out; }
};

class Bar
{
  friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const Bar&amp;);
};

class FooBar
{
  friend std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const FooBar&amp;);
};

std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const Bar&amp;){ return out; }
std::ostream&amp; operator&lt;&lt;(std::ostream &amp;out, const FooBar&amp;){ return out; }

int main()
{
  std::ostream&amp; (*bar_ptr)(std::ostream &amp;out, const Bar&amp;)
    = operator&lt;&lt;;    // Geht
  std::ostream&amp; (*foobar_ptr)(std::ostream &amp;out, const FooBar&amp;)
    = operator&lt;&lt;;    // Dito. Ist schließlich das gleiche, ich wollte bloß die
                     // Überladungsauflösung demonstrieren
  std::ostream&amp; (*foo_ptr)(std::ostream &amp;out, const Foo&amp;)
    = operator&lt;&lt;;    // Kann Funktion nicht finden
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2298714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2298714</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 13 Feb 2013 19:19:04 GMT</pubDate></item></channel></rss>