<?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[Elementzugriff (by reference) mit&#x2F;durch operator&amp;lt;&amp;lt;]]></title><description><![CDATA[<p>Guten Abend zusammen.</p>
<p>Ich habe festgestellt (oder besser mein Compiler), dass für die Ausgabe der Object-Elemente via <em>getter</em>-Methode kein passender <strong>operator&lt;&lt;</strong> gefunden werden kann (Variante A).</p>
<p>Variante B übersetzt ohne Beanstandung und bringt auch das gewünschte Ergebnis.</p>
<p>Meine Frage an Euch: <strong>Warum ist das so?</strong> Die Typen sind identisch.</p>
<p><em>Variante A</em></p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, hm::dots::Object const&amp; obj)
    {
        out &lt;&lt; &quot;[&quot; &lt;&lt; obj.getPosition &lt;&lt; &quot;; &quot; &lt;&lt; obj.getAcceleration &lt;&lt; &quot;]&quot;;
        return out;
    }
</code></pre>
<p><em>Variante B</em></p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, hm::dots::Object const&amp; obj)
    {
        hm::dots::position_t const position = obj.getPosition();
        hm::dots::direction_t const acceleration = obj.getAcceleration();
        out &lt;&lt; &quot;[&quot; &lt;&lt; position &lt;&lt; &quot;; &quot; &lt;&lt; acceleration &lt;&lt; &quot;]&quot;;
        return out;
    }
</code></pre>
<p><em>getter-Methoden (Klasse 'hm::dots::Object')</em></p>
<pre><code class="language-cpp">// ...
    inline position_t const&amp; getPosition() const { return position_; }
    inline direction_t const&amp; getAcceleration() const { return acceleration_; }
// ...
</code></pre>
<p><em>Überladung des operators&lt;&lt; (Klasse 'hm::dots::Vector2d&lt;T&gt;')</em></p>
<pre><code class="language-cpp">// ...
template &lt;class T&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, hm::dots::Vector2d&lt;T&gt; const&amp;);
    // Für Debug-Zwecke und zur Ausgabe der Vektordaten auf der Konsole
// ...
</code></pre>
<p><em>Typen, Vererbungshierarchie</em></p>
<pre><code>typedef float real_t
typedef hm::dots::Position2d&lt;real_t&gt; position_t
typedef hm::dots::Direction2d&lt;real_t&gt; direction_t

hm::dots::Position2d&lt;T&gt; --&gt; hm::dots::Vector2d&lt;T&gt;
hm::dots::Direction2d&lt;T&gt; --&gt; hm::dots::Vector2d&lt;T&gt;
</code></pre>
<p>Ich danke schon mal vorab für eine Erleuchtung.</p>
<p>Grüße... Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/215282/elementzugriff-by-reference-mit-durch-operator-lt-lt</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 17:35:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/215282.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Jun 2008 20:29:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Elementzugriff (by reference) mit&#x2F;durch operator&amp;lt;&amp;lt; on Sun, 08 Jun 2008 20:29:20 GMT]]></title><description><![CDATA[<p>Guten Abend zusammen.</p>
<p>Ich habe festgestellt (oder besser mein Compiler), dass für die Ausgabe der Object-Elemente via <em>getter</em>-Methode kein passender <strong>operator&lt;&lt;</strong> gefunden werden kann (Variante A).</p>
<p>Variante B übersetzt ohne Beanstandung und bringt auch das gewünschte Ergebnis.</p>
<p>Meine Frage an Euch: <strong>Warum ist das so?</strong> Die Typen sind identisch.</p>
<p><em>Variante A</em></p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, hm::dots::Object const&amp; obj)
    {
        out &lt;&lt; &quot;[&quot; &lt;&lt; obj.getPosition &lt;&lt; &quot;; &quot; &lt;&lt; obj.getAcceleration &lt;&lt; &quot;]&quot;;
        return out;
    }
</code></pre>
<p><em>Variante B</em></p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, hm::dots::Object const&amp; obj)
    {
        hm::dots::position_t const position = obj.getPosition();
        hm::dots::direction_t const acceleration = obj.getAcceleration();
        out &lt;&lt; &quot;[&quot; &lt;&lt; position &lt;&lt; &quot;; &quot; &lt;&lt; acceleration &lt;&lt; &quot;]&quot;;
        return out;
    }
</code></pre>
<p><em>getter-Methoden (Klasse 'hm::dots::Object')</em></p>
<pre><code class="language-cpp">// ...
    inline position_t const&amp; getPosition() const { return position_; }
    inline direction_t const&amp; getAcceleration() const { return acceleration_; }
// ...
</code></pre>
<p><em>Überladung des operators&lt;&lt; (Klasse 'hm::dots::Vector2d&lt;T&gt;')</em></p>
<pre><code class="language-cpp">// ...
template &lt;class T&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, hm::dots::Vector2d&lt;T&gt; const&amp;);
    // Für Debug-Zwecke und zur Ausgabe der Vektordaten auf der Konsole
// ...
</code></pre>
<p><em>Typen, Vererbungshierarchie</em></p>
<pre><code>typedef float real_t
typedef hm::dots::Position2d&lt;real_t&gt; position_t
typedef hm::dots::Direction2d&lt;real_t&gt; direction_t

hm::dots::Position2d&lt;T&gt; --&gt; hm::dots::Vector2d&lt;T&gt;
hm::dots::Direction2d&lt;T&gt; --&gt; hm::dots::Vector2d&lt;T&gt;
</code></pre>
<p>Ich danke schon mal vorab für eine Erleuchtung.</p>
<p>Grüße... Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525388</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Sun, 08 Jun 2008 20:29:20 GMT</pubDate></item><item><title><![CDATA[Reply to Elementzugriff (by reference) mit&#x2F;durch operator&amp;lt;&amp;lt; on Sun, 08 Jun 2008 21:12:54 GMT]]></title><description><![CDATA[<p>Klammern beim Funktionsaufruf vergessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525408</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 08 Jun 2008 21:12:54 GMT</pubDate></item><item><title><![CDATA[Reply to Elementzugriff (by reference) mit&#x2F;durch operator&amp;lt;&amp;lt; on Sun, 08 Jun 2008 21:17:45 GMT]]></title><description><![CDATA[<p>Autsch... zu spät, zuviel Kaffee und zuviele Diagramme im Kopf <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Danke dir camper, JETZT seh ich es auch (60-Watt-Erleuchtung).</p>
<p>Grüße... Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1525409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1525409</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Sun, 08 Jun 2008 21:17:45 GMT</pubDate></item></channel></rss>