<?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[Compiliert nicht]]></title><description><![CDATA[<p>Hallo,</p>
<p>zum üben von Operatorenüberladung habe ich ein programm geschrieben doch er kompiliert nicht ich kriege den Fehler C4621.</p>
<p>In den Kommmentaren steht was normalerweise gemacht werden soll.</p>
<pre><code class="language-cpp">// ++++++++++++++++++++++++++++++++++++++++++++ //
//					   //
//		Name:	          	   //
//		Datei:	            	   //
//		Klonen von einzelnen zeichen  //
//					   //
// ++++++++++++++++++++++++++++++++++++++++++++ //

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;conio.h&gt;

using namespace std;

class cZeichenKlon{

private:
	char zeichen;		// Speicher des zu klonenden Zeichens
	int anzahlKlone;	// Die Widerholung des char Zeichens

public:
	cZeichenKlon(char zeichen=0, int anzahlKlone=0){	// Konstruktor
		this-&gt;anzahlKlone=anzahlKlone;
		this-&gt;zeichen=zeichen;}

	void print(){										// Ausgabe der Attribute
		cout &lt;&lt; zeichen &lt;&lt; endl
		     &lt;&lt; anzahlKlone &lt;&lt; endl;}

	// ------------ setMethoden ------------------------- //

	int setanzahlKlone(int k){this-&gt;anzahlKlone=k;}
	int getanzahlKlone(){return this-&gt;anzahlKlone;}

	// ------------ getMethoden ------------------------- //

	char getZeichen(){return zeichen;}
	char setZeichen(char s){this-&gt;zeichen=s;}

	cZeichenKlon&amp; operator++ (){   // Überladen des
                             //Orators++ zum erhöhen der anzahl der Klone
		cZeichenKlon::anzahlKlone++;
		return *this;}

	cZeichenKlon&amp; operator-- (){	// Überladung des Operator--
		cZeichenKlon::anzahlKlone--;
		return *this;}

	// --------------- Ausgabeoperator -------------------------------------- //

	friend ostream&amp; operator&lt;&lt; (ostream&amp; stream, cZeichenKlon&amp; klon){
		stream &lt;&lt; klon.getZeichen();									  // Gibt das Zeichen aus
		for(int i=0; i&lt;klon.getanzahlKlone(); i++){stream &lt;&lt; klon.getZeichen();}	// und klont das Zeichen um den wert von anzahlKlone
		return stream;
	}

	// ------------------------- Eingabeoperator --------------------- //

	friend istream&amp; operator&gt;&gt; (istream&amp; in, cZeichenKlon&amp; kette){					      // String entgegennehmen länge und 
		string c=&quot;&quot;;																                       // Widerholung der zeichen speichern
		int laenge;
		int widerholung;
		in &gt;&gt; c;
		// Geht den String durch und zählt widerholung 
                  //der Zeichen  ansonsten bricht er ab
		for(int i=0; i&lt;c.length();i++){if(c[i+1]!=0 &amp;&amp; c[i]!=c[i+1]) 
                  break; else {kette.setZeichen(c[i]); widerholung++;}
		return in;
		}
	}

};

// ------------------ Hauptprogramm ------------------------- //
// Testet die Überladungs Operatoren //
	int main(){
		cZeichenKlon z1(' ',0);

		z1.print();
		cout &lt;&lt; z1;
		z1++;
		z1++;
		cout &lt;&lt; z1;
		cin &gt;&gt; &quot;eeeee&quot;;
		cout &lt;&lt; z1;
		z1--;
		cout &lt;&lt; z1;

		while(!_kbhit());
		return 0;

	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/296507/compiliert-nicht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 22:35:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296507.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Dec 2011 08:40:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 08:40:30 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zum üben von Operatorenüberladung habe ich ein programm geschrieben doch er kompiliert nicht ich kriege den Fehler C4621.</p>
<p>In den Kommmentaren steht was normalerweise gemacht werden soll.</p>
<pre><code class="language-cpp">// ++++++++++++++++++++++++++++++++++++++++++++ //
//					   //
//		Name:	          	   //
//		Datei:	            	   //
//		Klonen von einzelnen zeichen  //
//					   //
// ++++++++++++++++++++++++++++++++++++++++++++ //

#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;conio.h&gt;

using namespace std;

class cZeichenKlon{

private:
	char zeichen;		// Speicher des zu klonenden Zeichens
	int anzahlKlone;	// Die Widerholung des char Zeichens

public:
	cZeichenKlon(char zeichen=0, int anzahlKlone=0){	// Konstruktor
		this-&gt;anzahlKlone=anzahlKlone;
		this-&gt;zeichen=zeichen;}

	void print(){										// Ausgabe der Attribute
		cout &lt;&lt; zeichen &lt;&lt; endl
		     &lt;&lt; anzahlKlone &lt;&lt; endl;}

	// ------------ setMethoden ------------------------- //

	int setanzahlKlone(int k){this-&gt;anzahlKlone=k;}
	int getanzahlKlone(){return this-&gt;anzahlKlone;}

	// ------------ getMethoden ------------------------- //

	char getZeichen(){return zeichen;}
	char setZeichen(char s){this-&gt;zeichen=s;}

	cZeichenKlon&amp; operator++ (){   // Überladen des
                             //Orators++ zum erhöhen der anzahl der Klone
		cZeichenKlon::anzahlKlone++;
		return *this;}

	cZeichenKlon&amp; operator-- (){	// Überladung des Operator--
		cZeichenKlon::anzahlKlone--;
		return *this;}

	// --------------- Ausgabeoperator -------------------------------------- //

	friend ostream&amp; operator&lt;&lt; (ostream&amp; stream, cZeichenKlon&amp; klon){
		stream &lt;&lt; klon.getZeichen();									  // Gibt das Zeichen aus
		for(int i=0; i&lt;klon.getanzahlKlone(); i++){stream &lt;&lt; klon.getZeichen();}	// und klont das Zeichen um den wert von anzahlKlone
		return stream;
	}

	// ------------------------- Eingabeoperator --------------------- //

	friend istream&amp; operator&gt;&gt; (istream&amp; in, cZeichenKlon&amp; kette){					      // String entgegennehmen länge und 
		string c=&quot;&quot;;																                       // Widerholung der zeichen speichern
		int laenge;
		int widerholung;
		in &gt;&gt; c;
		// Geht den String durch und zählt widerholung 
                  //der Zeichen  ansonsten bricht er ab
		for(int i=0; i&lt;c.length();i++){if(c[i+1]!=0 &amp;&amp; c[i]!=c[i+1]) 
                  break; else {kette.setZeichen(c[i]); widerholung++;}
		return in;
		}
	}

};

// ------------------ Hauptprogramm ------------------------- //
// Testet die Überladungs Operatoren //
	int main(){
		cZeichenKlon z1(' ',0);

		z1.print();
		cout &lt;&lt; z1;
		z1++;
		z1++;
		cout &lt;&lt; z1;
		cin &gt;&gt; &quot;eeeee&quot;;
		cout &lt;&lt; z1;
		z1--;
		cout &lt;&lt; z1;

		while(!_kbhit());
		return 0;

	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2153705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153705</guid><dc:creator><![CDATA[Gast4621]]></dc:creator><pubDate>Tue, 06 Dec 2011 08:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 08:52:21 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cin &gt;&gt; &quot;eeeee&quot;;
</code></pre>
<p>Was möchtest du hier machen? Wenn du was ausgeben willst, wäre vielleicht cout angebrachter. cin ist für Eingaben, und du kannst dem Stringliteral &quot;eeeee&quot; keine eingabe zuweisen.</p>
<p>EDIT: Beim nächsten Mal bitte auch die Zeile angeben, in der der Fehler auftritt. Dann muss man für sowas triviales nicht immer den ganzen Code durch den eigenen Compiler jagen. <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/2153708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153708</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 06 Dec 2011 08:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 08:53:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">cin &gt;&gt; &quot;eeeee&quot;;
</code></pre>
<p>in Zeile 87 macht nicht besonders viel Sinn. Ich weiß ned genau was du machen willst, aber mit cin liest du nen Wert ein und speicherst in in einer Variablen.</p>
<pre><code class="language-cpp">cin &gt;&gt; Variablenname;
</code></pre>
<p>// edit: sry, zu langsam</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153710</guid><dc:creator><![CDATA[Dudemeister]]></dc:creator><pubDate>Tue, 06 Dec 2011 08:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 08:56:57 GMT]]></title><description><![CDATA[<p>es soll halt so aussehen als ob der Benutzer diese zeichenkette eingegeben hat cin &gt;&gt; habe ich verwendet da ich den Operator testen wollte.</p>
<p>Syntaktisch scheint alles korrekt zu sein der Fehler müsste beim ++Operator liegen, weil er sagt &quot;er konnte etwas nicht finden und benutzt jetzt den Postfix Operator&quot;.</p>
<p>Es ist nur ein Fehler und auch nur ein Warning aber er lässt mich trotzdem das Programm nicht starten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153711</guid><dc:creator><![CDATA[Gast4621]]></dc:creator><pubDate>Tue, 06 Dec 2011 08:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 09:04:51 GMT]]></title><description><![CDATA[<p>-Fehler ist in Zeile 67 Konflikt '&lt;' zwischen signed und unsigned</p>
<p>-Zeile 63 warning C4101: 'laenge': Unreferenzierte lokale Variable</p>
<p>-Zeile 81 warning C4621: Keine Postfix-Form des Operators '--' für den Typ 'cZeichenKlon' gefunden, Präfix-Form verwendet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153716</guid><dc:creator><![CDATA[Gast4621]]></dc:creator><pubDate>Tue, 06 Dec 2011 09:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 09:04:52 GMT]]></title><description><![CDATA[<p>Gast4621 schrieb:</p>
<blockquote>
<p>es soll halt so aussehen als ob der Benutzer diese zeichenkette eingegeben hat cin &gt;&gt; habe ich verwendet da ich den Operator testen wollte.</p>
</blockquote>
<p>Wut?? <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>
<p>Gast4621 schrieb:</p>
<blockquote>
<p>Es ist nur ein Fehler und auch nur ein Warning aber er lässt mich trotzdem das Programm nicht starten.</p>
</blockquote>
<p>Und diesen einen Fehler haben wir dir genannt. Danach lässt sich das Programm starten. Zu deiner Warnung: du musst den operator++ auch für Postfix-Notation überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153717</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 06 Dec 2011 09:04:52 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 09:06:49 GMT]]></title><description><![CDATA[<p>Gast4621 schrieb:</p>
<blockquote>
<p>-Fehler ist in Zeile 67 Konflikt '&lt;' zwischen signed und unsigned</p>
</blockquote>
<p>Mach aus der Zählvariable i einfach ein unsigned int oder size_t, dann ist die Warnung verschwunden.</p>
<p>Gast4621 schrieb:</p>
<blockquote>
<p>-Zeile 63 warning C4101: 'laenge': Unreferenzierte lokale Variable</p>
</blockquote>
<p>Jo, du deklarierst eine Variable, die du gar nicht benutzt. Also entweder benutzen oder raus damit.</p>
<p>Gast4621 schrieb:</p>
<blockquote>
<p>-Zeile 81 warning C4621: Keine Postfix-Form des Operators '--' für den Typ 'cZeichenKlon' gefunden, Präfix-Form verwendet</p>
</blockquote>
<p>Hatte bereits was dazu gesagt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153718</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 06 Dec 2011 09:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 09:07:42 GMT]]></title><description><![CDATA[<p>Glaubst du uns jetzt nicht dass</p>
<pre><code class="language-cpp">cin &gt;&gt; &quot;eeeee&quot;;
</code></pre>
<p>falsch ist, oder versteh ich deine Antwort falsch?</p>
<p>Die Sache mit dem Prä- und Postinkrement ist so, da du den Präinkrementoperator überschreibst.</p>
<p>Siehe hierzu <a href="http://www.c-plusplus.net/forum/232010" rel="nofollow">http://www.c-plusplus.net/forum/232010</a> Punkt 3.10</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153719</guid><dc:creator><![CDATA[Dudemeister]]></dc:creator><pubDate>Tue, 06 Dec 2011 09:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 09:15:14 GMT]]></title><description><![CDATA[<p>Es kompiliert jetzt schonmal vielen Dank für die Antworten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153721</guid><dc:creator><![CDATA[Gast4621]]></dc:creator><pubDate>Tue, 06 Dec 2011 09:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to Compiliert nicht on Tue, 06 Dec 2011 09:26:09 GMT]]></title><description><![CDATA[<p>Gast4621 schrieb:</p>
<blockquote>
<p>Es kompiliert jetzt schonmal vielen Dank für die Antworten.</p>
</blockquote>
<p>Und zu allen Warnings habe ich auch was geschrieben. Bitte nicht überlesen, sondern berücksichtigen.</p>
<p>Und noch was: deine Formatierung ist grauenhaft, sorry. <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="🙂"
    /> Das hier</p>
<pre><code class="language-cpp">for(int i=0; i&lt;c.length();i++){if(c[i+1]!=0 &amp;&amp; c[i]!=c[i+1]) 
			break; else {kette.setZeichen(c[i]); widerholung++;}
</code></pre>
<p>kann man ja kaum lesen. Warum sieht das nicht so aus:</p>
<pre><code class="language-cpp">for(int i=0; i&lt;c.length();i++)
{
    if(c[i+1]!=0 &amp;&amp; c[i]!=c[i+1]) 
        break;
    else
    {
        kette.setZeichen(c[i]); widerholung++;
    }
</code></pre>
<p>Hey, Moment mal! Da offenbaren sich ja plötzlich Ungereimtheiten! Du denkst sicher, dass das folgende <code>return in;</code> (siehe kompletter Quellcode) außerhalb der <code>for</code> -Schleife steht, wie du es ja auch durch die Einrückung deutlich gemacht hast. Stimmt aber nicht, es ist Bestandteil der Schleife und wird ohne weitere Bedingung am Ende des ersten Schleifendurchlaufs ausgeführt. Das heißt, deine Schleife wiederholt sich <strong>nie</strong>, da immer beim ersten Durchgang per <code>return</code> aus der Funktion gesprungen wird. War dir das klar? Mit vernünftiger Einrückung wäre das nicht passiert. <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/2153725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153725</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 06 Dec 2011 09:26:09 GMT</pubDate></item></channel></rss>