<?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[Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt;]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Programm zu schreiben:<br />
Erstellen Sie eine Klasse Liste, in der beliebig viele Integerwerte gespeichert werden können. Implementieren Sie die Methoden operator&lt;&lt; und operator&gt;&gt; so, dass Listen formartiert ausgegeben und eingelesen werden können. (Gewünschtes Format für die Darstellung einer Liste mit den drei Werten 1, 2 und 3 als Inhalt ist [1,2,3].)</p>
<p>Bis jetzt habe ich folgendes gemacht:<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>class Liste {<br />
public:<br />
int x; //Anzahl der eingegebenen Zahlen<br />
int *y;<br />
Liste () {x=0;}<br />
~Liste() {if <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="(y)"
      alt="👍"
    /> delete [] y;} //Destruktor</p>
<p>void werte(int zahl) {<br />
if(zahl == 0)<br />
return;<br />
if(x == 0) {<br />
y = new int[x+1];<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox218666" checked="true" /><label for="checkbox218666">= zahl;</label></div><br />
x++; }<br />
else{<br />
int *iarr = new int[x+1];<br />
for (int i = 0; i &lt; x; i++){<br />
iarr[i] = y[i];}<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox218665" checked="true" /><label for="checkbox218665">= zahl;</label></div><br />
x++;<br />
y = iarr;<br />
}<br />
}<br />
};</p>
<p>ostream&amp; operator&gt;&gt;(ostream&amp; out, const Liste&amp; o){<br />
out &lt;&lt; '[';<br />
for (int i=0; i&lt;o.x; i++) {<br />
out &lt;&lt; o.y[i];<br />
if (i != (o.x-1))<br />
out &lt;&lt; ',';<br />
else<br />
out &lt;&lt; ']';<br />
}<br />
return out;<br />
}</p>
<p>istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; in) {<br />
in &gt;&gt; '[';<br />
for (int i=0; i&lt;in.x; i++) {<br />
in &gt;&gt; in.y[i];<br />
if (i != (in.x-1))<br />
in &gt;&gt; ',';<br />
else<br />
in &gt;&gt; ']';<br />
}<br />
return in;<br />
}</p>
<p>int main () {<br />
Liste z;<br />
int zahl;<br />
cout &lt;&lt; &quot;Bitte geben Sie beliebig viele Zahlen ein (mit 0 beenden Sie die Eingabe): &quot; &lt;&lt; endl;<br />
do {<br />
cin &gt;&gt; zahl;<br />
z.werte(zahl);<br />
} while(zahl != 0);<br />
cout&lt;&lt; &quot;Die Liste beinhaltet die Werte: &quot; &lt;&lt; z;<br />
}</p>
<p>Die Methode ostream&amp; operator&gt;&gt; hat schon mal funktioniert, allerdings habe ich keine Idee wie ich istream&amp; operator&lt;&lt; einbauen kann bzw. wie die Liste direkt mit der vorgegebenen Formatierung eingegeben werden kann.</p>
<p>Meine Fehlerliste sieht folgenderweise aus:<br />
../9.2.cpp:41: error: conflicting declaration ‘std::istream&amp; in’<br />
../9.2.cpp:41: error: ‘in’ has a previous declaration as ‘const Liste&amp; in’<br />
../9.2.cpp:42: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; '['’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:44: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ((int*)in-&gt;Liste::y)[i]’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:46: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ','’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:48: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ']'’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:50: error: invalid initialization of reference of type ‘std::istream&amp;’ from expression of type ‘const Liste’<br />
make: *** [9.2.o] Error 1</p>
<p>Bin um jede Hilfe dankbar <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/topic/330608/methoden-operator-lt-lt-und-operator-gt-gt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 02:32:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330608.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Jan 2015 14:17:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 14:17:52 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Programm zu schreiben:<br />
Erstellen Sie eine Klasse Liste, in der beliebig viele Integerwerte gespeichert werden können. Implementieren Sie die Methoden operator&lt;&lt; und operator&gt;&gt; so, dass Listen formartiert ausgegeben und eingelesen werden können. (Gewünschtes Format für die Darstellung einer Liste mit den drei Werten 1, 2 und 3 als Inhalt ist [1,2,3].)</p>
<p>Bis jetzt habe ich folgendes gemacht:<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>class Liste {<br />
public:<br />
int x; //Anzahl der eingegebenen Zahlen<br />
int *y;<br />
Liste () {x=0;}<br />
~Liste() {if <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="(y)"
      alt="👍"
    /> delete [] y;} //Destruktor</p>
<p>void werte(int zahl) {<br />
if(zahl == 0)<br />
return;<br />
if(x == 0) {<br />
y = new int[x+1];<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox218666" checked="true" /><label for="checkbox218666">= zahl;</label></div><br />
x++; }<br />
else{<br />
int *iarr = new int[x+1];<br />
for (int i = 0; i &lt; x; i++){<br />
iarr[i] = y[i];}<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox218665" checked="true" /><label for="checkbox218665">= zahl;</label></div><br />
x++;<br />
y = iarr;<br />
}<br />
}<br />
};</p>
<p>ostream&amp; operator&gt;&gt;(ostream&amp; out, const Liste&amp; o){<br />
out &lt;&lt; '[';<br />
for (int i=0; i&lt;o.x; i++) {<br />
out &lt;&lt; o.y[i];<br />
if (i != (o.x-1))<br />
out &lt;&lt; ',';<br />
else<br />
out &lt;&lt; ']';<br />
}<br />
return out;<br />
}</p>
<p>istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; in) {<br />
in &gt;&gt; '[';<br />
for (int i=0; i&lt;in.x; i++) {<br />
in &gt;&gt; in.y[i];<br />
if (i != (in.x-1))<br />
in &gt;&gt; ',';<br />
else<br />
in &gt;&gt; ']';<br />
}<br />
return in;<br />
}</p>
<p>int main () {<br />
Liste z;<br />
int zahl;<br />
cout &lt;&lt; &quot;Bitte geben Sie beliebig viele Zahlen ein (mit 0 beenden Sie die Eingabe): &quot; &lt;&lt; endl;<br />
do {<br />
cin &gt;&gt; zahl;<br />
z.werte(zahl);<br />
} while(zahl != 0);<br />
cout&lt;&lt; &quot;Die Liste beinhaltet die Werte: &quot; &lt;&lt; z;<br />
}</p>
<p>Die Methode ostream&amp; operator&gt;&gt; hat schon mal funktioniert, allerdings habe ich keine Idee wie ich istream&amp; operator&lt;&lt; einbauen kann bzw. wie die Liste direkt mit der vorgegebenen Formatierung eingegeben werden kann.</p>
<p>Meine Fehlerliste sieht folgenderweise aus:<br />
../9.2.cpp:41: error: conflicting declaration ‘std::istream&amp; in’<br />
../9.2.cpp:41: error: ‘in’ has a previous declaration as ‘const Liste&amp; in’<br />
../9.2.cpp:42: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; '['’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:44: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ((int*)in-&gt;Liste::y)[i]’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:46: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ','’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:48: error: no match for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ']'’<br />
../9.2.cpp:41: note: candidates are: std::istream&amp; operator&gt;&gt;(std::istream&amp;, const Liste&amp;)<br />
../9.2.cpp:50: error: invalid initialization of reference of type ‘std::istream&amp;’ from expression of type ‘const Liste’<br />
make: *** [9.2.o] Error 1</p>
<p>Bin um jede Hilfe dankbar <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/2438218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438218</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Sun, 18 Jan 2015 14:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 14:20:18 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung bezieht sich auf diese Zeile:</p>
<pre><code class="language-cpp">istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; in) {
</code></pre>
<blockquote>
<p>../9.2.cpp:41: error: conflicting declaration ‘std::istream&amp; in’<br />
../9.2.cpp:41: error: ‘in’ has a previous declaration as ‘const Liste&amp; in’</p>
</blockquote>
<p>Fällt dir was auf?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438219</guid><dc:creator><![CDATA[hgaqr]]></dc:creator><pubDate>Sun, 18 Jan 2015 14:20:18 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 14:29:10 GMT]]></title><description><![CDATA[<p>ich depp. habe den Teil geändert:</p>
<p>istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; inp) {<br />
in &gt;&gt; '[';<br />
for (int i=0; i&lt;inp.x; i++) {<br />
in &gt;&gt; inp.y[i];<br />
if (i != (inp.x-1))<br />
in &gt;&gt; ',';<br />
else<br />
in &gt;&gt; ']';<br />
}<br />
return in;<br />
}</p>
<p>allerdings bekomme ich immer noch fehlermeldungen:</p>
<p>../9.2.cpp:42: error: ambiguous overload for ‘operator&gt;&gt;’ in ‘in &gt;&gt; '['’<br />
../9.2.cpp:46: error: ambiguous overload for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ','’<br />
../9.2.cpp:48: error: ambiguous overload for ‘operator&gt;&gt;’ in ‘in &gt;&gt; ']'’<br />
/us</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438221</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Sun, 18 Jan 2015 14:29:10 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 14:56:56 GMT]]></title><description><![CDATA[<p>Hi,<br />
kannst du mir das erklären?</p>
<pre><code>in &gt;&gt; ']';
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438226</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 18 Jan 2015 14:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 15:37:07 GMT]]></title><description><![CDATA[<p>Die Aufgabenstellung sagt ja, dass die Liste mit einer bestimmten Formatierung ein- und ausgegeben werden soll. Also die Eingabe soll wie die Ausgabe aussehen.<br />
(Gewünschtes Format für die Darstellung einer Liste mit den drei Werten 1, 2 und 3 als Inhalt ist [1,2,3].)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438237</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Sun, 18 Jan 2015 15:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 15:42:34 GMT]]></title><description><![CDATA[<p>Ja, es wäre schön, wenn das so in der Art gehen würde. Aber leider kann man so nicht Zeichen überspringen. Erstelle dir eine temporärere char Variable, lies darin ein und prüfe, ob sie '[' ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438239</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 18 Jan 2015 15:42:34 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 17:19:05 GMT]]></title><description><![CDATA[<p>Könntest du mir das vllt ein bisschen genauer erklären. Stehe gerade ein bisschen auf dem Schlauch. Habe eben nochmal probiert es so zu machen: (funktioniert aber auch nicht)</p>
<p>istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; inp) {<br />
int k=x-1; //Anzahl Komma<br />
char q[x+k+2]; //hat Größe: Anzahl Zahlen, Anzahl Komma, zwei Klammern<br />
int i=0;<br />
q[i]='[';<br />
for (int i=1; i&lt;inp.x; i++) {<br />
q[i]=inp.zahl[y];<br />
i++;<br />
if (i != (inp.x-1))<br />
q[i]= ',';<br />
i++;<br />
else<br />
q[i]= ']';<br />
}<br />
return in;<br />
}</p>
<p>wie kann ich denn meine Zahlen einlesen? <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/2438253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438253</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Sun, 18 Jan 2015 17:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 17:23:50 GMT]]></title><description><![CDATA[<p>Er meint nur ein einzelnes Zeichen einlesen:</p>
<pre><code class="language-cpp">char c;
in &gt;&gt; c;
if (c != '[')
 // error
</code></pre>
<p>Was du im Fehlerfall machst, ist dir überlassen.</p>
<p>Typischerweise schreibt man da</p>
<pre><code class="language-cpp">in.setstate(std::ios_base::failbit);
return in;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438254</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438254</guid><dc:creator><![CDATA[hgaqr]]></dc:creator><pubDate>Sun, 18 Jan 2015 17:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 18:03:25 GMT]]></title><description><![CDATA[<p>habe den Teil jetzt so geändert:</p>
<p>istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; inp) {<br />
char c;<br />
in &gt;&gt; c;<br />
if (c != '[')<br />
in.setstate(std::ios_base::failbit);<br />
else<br />
do {<br />
in &gt;&gt; c;<br />
} while (c &gt;= 0 || c ==',');<br />
if (c == ']')<br />
return in;<br />
}</p>
<p>allerdings funktioniert die ausgabe jetzt nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438265</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Sun, 18 Jan 2015 18:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 18:33:03 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Liste {
public:
	int x;  // tolle
	int *y; // namen
	Liste() { x = 0; }
	~Liste() { if (y) delete[] y; } // if unnoetig, delete[] 0 hat keine Wirkung.

	void werte(int zahl) {
		if (zahl == 0) // den Spezialfall wirklich hier behandeln?
			return;
		if (x == 0) {
			y = new int[x + 1]; // wenn du 1 meinst, dann schreib 1 hin. &quot;new int&quot; taets auch.
			y[x] = zahl; // *y = zahl
			x++;
		}
		else{
			int *iarr = new int[x + 1];
			for (int i = 0; i &lt; x; i++){
				iarr[i] = y[i];
			}
			iarr[x] = zahl;
			x++;
			y = iarr; // der pointer auf den alten Speicherbereich ist jetzt futsch. wer gibt den Speicher frei?
		}
	}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2438273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438273</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 18 Jan 2015 18:33:03 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Mon, 19 Jan 2015 15:46:34 GMT]]></title><description><![CDATA[<p>xhkjd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438277</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Mon, 19 Jan 2015 15:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Sun, 18 Jan 2015 18:57:11 GMT]]></title><description><![CDATA[<p>Verwende bitte [code]-Tags, wenn du code postest.<br />
Du verwendest den <code>istream&amp; operator&gt;&gt;(istream&amp; in, const Liste&amp; inp)</code> nirgends. In der <code>main()</code> ließt du immer noch in einen <code>int</code> ein, nicht in eine <code>Liste</code> . Wenn du wie bisher <code>1[enter]2[enter]...0[enter]</code> eingibst läuft dein Programm wie vorher.<br />
Am <code>operator&gt;&gt;()</code> stimmt noch was nicht. Du ließt immer in einen <code>char</code> nie einen <code>int</code> und du veränderst die Liste darin garnicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438280</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sun, 18 Jan 2015 18:57:11 GMT</pubDate></item><item><title><![CDATA[Reply to Methoden operator&amp;lt;&amp;lt; und operator&amp;gt;&amp;gt; on Mon, 19 Jan 2015 15:00:39 GMT]]></title><description><![CDATA[<p>xcvnb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438306</guid><dc:creator><![CDATA[Sarah511]]></dc:creator><pubDate>Mon, 19 Jan 2015 15:00:39 GMT</pubDate></item></channel></rss>