<?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[[solved] Operator &amp;lt;&amp;lt; Überladen]]></title><description><![CDATA[<p>Mein erster (und hoffentlich nicht letzter) Post <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>
<p>Ich habe folgendes Problem:</p>
<p>Ich arbeite z.Z. das Tutorial <a href="http://www.highscore.de/cpp/aufbau" rel="nofollow">Programmieren in C++: Aufbau</a> durch und komme im <a href="http://www.highscore.de/cpp/aufbau/operatoren.html#section6" rel="nofollow">Abschnitt 4.6 - Aufgabe 2</a> nicht weiter. [Nehmt euch bitte die Zeit die kurze Aufgabe durchzulesen]</p>
<p>Ich bin soweit, dass ich immer <strong>nur eine</strong> Firma per &quot;&lt;&lt;&quot; übernehmen kann.<br />
Schreibe ich in meiner <em>main.cpp</em> z.B.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;firma.h&quot;

int main()
{
    firma A(&quot;A&quot;), B(&quot;B&quot;), C(&quot;C&quot;);
    A&lt;&lt;B&lt;&lt;C;
    A.firmen();
}
</code></pre>
<p>, so wird in A nur gespeichert, dass C übernommen wurde.<br />
Mache ich es allerdings der Reihe nach und nicht in einer Zeile wird korrekt ausgegeben, dass Firma A Firma B übernommen hat:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;firma.h&quot;

int main()
{
    firma A(&quot;A&quot;), B(&quot;B&quot;), C(&quot;C&quot;);
    B&lt;&lt;C;
    A&lt;&lt;B;
    A.firmen();
}
</code></pre>
<p>Außerdem kriege ich es irgendwie nicht hin, dass ich mehrere übernommene Firmen im Array speichern kann, aber seht euch mal selbst meine <em>firma.h</em> an:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

class firma
{
    std::string Name;
    std::string Uebernommen[10];

    public:
    firma(std::string name);
    void firmen();
    void operator+(firma &amp;F2);
    firma &amp;operator&lt;&lt;(firma &amp;F1)    ///HIER IST DER ENTSCHEIDENDE TEIL!
    {
        Uebernommen[0]=F1.Name;

        return *this;
    }
};
</code></pre>
<p>Wäre echt klasse, wenn jemand sich ein paar Minuten nehmen würde, mir den richtigen Weg zu weisen oder noch besser ein fach selbst die Aufgabe zu lösen (dürfte eigentlich kein Problem für die meisten sein).</p>
<p>Bin ja gespannt ob jemand 'ne Idee hat.</p>
<p>Bye</p>
<p>p.s.: Natürlich existiert auch eine firma.cpp, aber diese habe ich einfach mal nicht gepostet und die wichtige Funktion direkt im Header definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187001/solved-operator-lt-lt-überladen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 14:24:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187001.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 14 Jul 2007 14:04:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [solved] Operator &amp;lt;&amp;lt; Überladen on Sat, 14 Jul 2007 15:05:32 GMT]]></title><description><![CDATA[<p>Mein erster (und hoffentlich nicht letzter) Post <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>
<p>Ich habe folgendes Problem:</p>
<p>Ich arbeite z.Z. das Tutorial <a href="http://www.highscore.de/cpp/aufbau" rel="nofollow">Programmieren in C++: Aufbau</a> durch und komme im <a href="http://www.highscore.de/cpp/aufbau/operatoren.html#section6" rel="nofollow">Abschnitt 4.6 - Aufgabe 2</a> nicht weiter. [Nehmt euch bitte die Zeit die kurze Aufgabe durchzulesen]</p>
<p>Ich bin soweit, dass ich immer <strong>nur eine</strong> Firma per &quot;&lt;&lt;&quot; übernehmen kann.<br />
Schreibe ich in meiner <em>main.cpp</em> z.B.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;firma.h&quot;

int main()
{
    firma A(&quot;A&quot;), B(&quot;B&quot;), C(&quot;C&quot;);
    A&lt;&lt;B&lt;&lt;C;
    A.firmen();
}
</code></pre>
<p>, so wird in A nur gespeichert, dass C übernommen wurde.<br />
Mache ich es allerdings der Reihe nach und nicht in einer Zeile wird korrekt ausgegeben, dass Firma A Firma B übernommen hat:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;firma.h&quot;

int main()
{
    firma A(&quot;A&quot;), B(&quot;B&quot;), C(&quot;C&quot;);
    B&lt;&lt;C;
    A&lt;&lt;B;
    A.firmen();
}
</code></pre>
<p>Außerdem kriege ich es irgendwie nicht hin, dass ich mehrere übernommene Firmen im Array speichern kann, aber seht euch mal selbst meine <em>firma.h</em> an:</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

class firma
{
    std::string Name;
    std::string Uebernommen[10];

    public:
    firma(std::string name);
    void firmen();
    void operator+(firma &amp;F2);
    firma &amp;operator&lt;&lt;(firma &amp;F1)    ///HIER IST DER ENTSCHEIDENDE TEIL!
    {
        Uebernommen[0]=F1.Name;

        return *this;
    }
};
</code></pre>
<p>Wäre echt klasse, wenn jemand sich ein paar Minuten nehmen würde, mir den richtigen Weg zu weisen oder noch besser ein fach selbst die Aufgabe zu lösen (dürfte eigentlich kein Problem für die meisten sein).</p>
<p>Bin ja gespannt ob jemand 'ne Idee hat.</p>
<p>Bye</p>
<p>p.s.: Natürlich existiert auch eine firma.cpp, aber diese habe ich einfach mal nicht gepostet und die wichtige Funktion direkt im Header definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325332</guid><dc:creator><![CDATA[yourdecay]]></dc:creator><pubDate>Sat, 14 Jul 2007 15:05:32 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Operator &amp;lt;&amp;lt; Überladen on Sat, 14 Jul 2007 14:12:29 GMT]]></title><description><![CDATA[<p>Du speicherst den name der übernommenen firma immer in übernommen[0] ab.<br />
Du musst die einträge des arrays nach hinten verschieben bervor du soetwas machst(auch andersherum möglich, falls irgendeiner wegen besseren methoden meckert etc.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325338</guid><dc:creator><![CDATA[Dennis123]]></dc:creator><pubDate>Sat, 14 Jul 2007 14:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Operator &amp;lt;&amp;lt; Überladen on Sat, 14 Jul 2007 14:29:13 GMT]]></title><description><![CDATA[<p>Hab daraufhin einfach mal folgendes probiert:<br />
Ausschnitt aus <em>firma.h</em></p>
<pre><code class="language-cpp">firma &amp;operator&lt;&lt;(firma &amp;F1)    ///HIER IST DER ENTSCHEIDENDE TEIL!
    {
        for (int i=0;i&lt;10;++i)
        {
            if (Uebernommen[i]!=&quot;&quot;)
            {
                break;
            }
            else
            {
                Uebernommen[i]=F1.Name;
            }
        }
        return *this;
    }
</code></pre>
<p>Es wird halt kontrolliert ob an der Stelle i im Uebernommen-Array schon was steht. Ist das der Fall soll if abgebrochen werden und das ganze mit [i+1] probiert werden uws. bis da mal nichts steht. An der Stelle die im Array frei ist, soll dann der Name der übernommenen Firma gespeichert werden (hoffe der Code tut das soeben beschriebene). Jetzt wird zumindest bei A&lt;&lt;B&lt;&lt;C gespeichert, dass B übernommen wurde. Allerdings sieht Uebernommen[10] dann so aus {B,B,B,B,B,B,B,B,B,B}. Aber wieso? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325348</guid><dc:creator><![CDATA[yourdecay]]></dc:creator><pubDate>Sat, 14 Jul 2007 14:29:13 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Operator &amp;lt;&amp;lt; Überladen on Sat, 14 Jul 2007 14:31:00 GMT]]></title><description><![CDATA[<p>Schau Dir den Code nochmal an. Der macht nicht das, was Du darunter in eigenen Worten beschrieben hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325350</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Sat, 14 Jul 2007 14:31:00 GMT</pubDate></item><item><title><![CDATA[Reply to [solved] Operator &amp;lt;&amp;lt; Überladen on Sat, 14 Jul 2007 15:05:06 GMT]]></title><description><![CDATA[<p>Hab es wieder überarbeitet und jetzt funktioniert es. Ausschnitt aus <em>firma.h</em> :</p>
<pre><code class="language-cpp">firma &amp;operator&lt;&lt;(firma &amp;F1)    ///HIER IST DER ENTSCHEIDENDE TEIL!
    {
        for (int i=0;i&lt;10;++i)
        {
            if (Uebernommen[i]==&quot;&quot;)
            {
                Uebernommen[i]=F1.Name;
                break;
            }
        }
        return *this;
    }
</code></pre>
<p>Jetzt wird kontrolliert ob die Stelle [i] im Array leer ist . Wenn &quot;leer&quot; wird dort der Name eingetragen. Ansonsten wird's mit [i+1],[i+2], usw. probiert.</p>
<p>Danke, bye :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1325368</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1325368</guid><dc:creator><![CDATA[yourdecay]]></dc:creator><pubDate>Sat, 14 Jul 2007 15:05:06 GMT</pubDate></item></channel></rss>