<?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[Zuweisungsoperator überladen]]></title><description><![CDATA[<p>Hi,</p>
<p>ich soll in der Unterklasse &quot;Unter&quot; den Zuweisungsoperator so überarbeiten dass die Zuweisung *pb1 = *pb2 richtig funktioniert.</p>
<p>Bin echter Anfänger und habe so meine Schwiegrigkieten mit dem Überladenen von Operatoren. Deshalb waren alle meine bisherigen Ansätze für die Katz.<br />
Hat vielleicht irgendwer eine Idee oder einen Ansatz mit dem ich es erneut versuchen kann?<br />
Fettes Danke schon mal im Voraus</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std; 

class Basis{
  protected: 
    int a ; 
  public: 
    Basis(): a(5){
    }
    virtual Basis&amp; operator=(Basis &amp;B){ 
      a = B.a;    
      return *this; 
    }  
}; 

class Unter: public Basis {
    int b; 
    public: 

    Unter(): b(10){
    }
    Unter&amp; operator=(Unter &amp;u){
       a = u.a; 
       b =u.b; 
    }
    void set_b(int b1){
       b = b1; 
    }
    int put_b(){
        return b; 
    }
    int sindwirbeidewirklichgleich(Unter &amp;u){
      return ( a==u.a &amp;&amp; b==u.b
    ); 
    }
};

 int main(){

 Unter U1, U2; 
 U2.set_b(27); 
 Basis *pb1;
 Basis *pb2; 
 pb1 = &amp;U1; 
 pb2 = &amp;U2; 
 *pb1 = *pb2;  

  if ( !U1.sindwirbeidewirklichgleich(U2)) {
    cout &lt;&lt; &quot;Es gilt: U1.put_b() = &quot; &lt;&lt; U1.put_b() &lt;&lt; &quot; und U2.put_b() = &quot; &lt;&lt; U2.put_b() &lt;&lt; endl;  
    cout &lt;&lt; &quot;Sie sind mit der Aufgabe noch nicht fertig !&quot; &lt;&lt; endl; 
  }
  else
    cout &lt;&lt; &quot;all ok !&quot; &lt;&lt; endl; 

	system(&quot;Pause&quot;);
    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/182779/zuweisungsoperator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 00:49:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/182779.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 May 2007 09:24:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 09:25:15 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich soll in der Unterklasse &quot;Unter&quot; den Zuweisungsoperator so überarbeiten dass die Zuweisung *pb1 = *pb2 richtig funktioniert.</p>
<p>Bin echter Anfänger und habe so meine Schwiegrigkieten mit dem Überladenen von Operatoren. Deshalb waren alle meine bisherigen Ansätze für die Katz.<br />
Hat vielleicht irgendwer eine Idee oder einen Ansatz mit dem ich es erneut versuchen kann?<br />
Fettes Danke schon mal im Voraus</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std; 

class Basis{
  protected: 
    int a ; 
  public: 
    Basis(): a(5){
    }
    virtual Basis&amp; operator=(Basis &amp;B){ 
      a = B.a;    
      return *this; 
    }  
}; 

class Unter: public Basis {
    int b; 
    public: 

    Unter(): b(10){
    }
    Unter&amp; operator=(Unter &amp;u){
       a = u.a; 
       b =u.b; 
    }
    void set_b(int b1){
       b = b1; 
    }
    int put_b(){
        return b; 
    }
    int sindwirbeidewirklichgleich(Unter &amp;u){
      return ( a==u.a &amp;&amp; b==u.b
    ); 
    }
};

 int main(){

 Unter U1, U2; 
 U2.set_b(27); 
 Basis *pb1;
 Basis *pb2; 
 pb1 = &amp;U1; 
 pb2 = &amp;U2; 
 *pb1 = *pb2;  

  if ( !U1.sindwirbeidewirklichgleich(U2)) {
    cout &lt;&lt; &quot;Es gilt: U1.put_b() = &quot; &lt;&lt; U1.put_b() &lt;&lt; &quot; und U2.put_b() = &quot; &lt;&lt; U2.put_b() &lt;&lt; endl;  
    cout &lt;&lt; &quot;Sie sind mit der Aufgabe noch nicht fertig !&quot; &lt;&lt; endl; 
  }
  else
    cout &lt;&lt; &quot;all ok !&quot; &lt;&lt; endl; 

	system(&quot;Pause&quot;);
    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294287</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 09:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 09:40:31 GMT]]></title><description><![CDATA[<p>Dein Problem:</p>
<pre><code class="language-cpp">class Basis {
   virtual void methode (Basis &amp;);
};

class Derivat : public Basis
   void methode (Derivat &amp;); // überschreibt nicht Basis::methode(Basis&amp;), da die Signatur eine andere ist.
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294301</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Tue, 29 May 2007 09:40:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 09:43:38 GMT]]></title><description><![CDATA[<p>Auch wenn du 'virtual' vor den operator geschrieben hast, hat ihn das Kind nicht überschrieben, sondern nur verdeckt (Überschreibung klappt nur, wenn die Parameterliste übereinstimmt). Du müsstest in der Basisklasse einen <code>operator=(const Unter&amp;);</code> anlegen (und das vermutlich für jede vorkommende Unterklasse), den du dann überschreiben kannst.</p>
<p>PS: Sagt dir das Konzept &quot;const Correctness&quot; etwas? Wenn du nicht vorhast, einen Wert zu ändern, solltest du ihn als '<strong>const</strong> irgendwas&amp;' übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294303</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 09:43:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 09:50:43 GMT]]></title><description><![CDATA[<p>Der Code ist vom Prof vorgegeben und es soll nur etwas in der Unterklasse verändert werden.<br />
Also sollte es erstmal so sein? Sorry für die dummen Fragen, aber ich hab die Vorlesung verpasst in der das Überladen von Operatoren dran war.</p>
<p>Unter&amp; operator=(<strong>const</strong> Unter &amp;u){<br />
a = u.a;<br />
b =u.b;<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294308</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 09:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 09:58:13 GMT]]></title><description><![CDATA[<p>Egal wie, du mußt dafür sorgen, daß beide Operatoren die selbe Parameterliste bekommen - wenn du keinen in die Basisklasse einfügen kannst, mußt du einen in der Unterklasse verwenden und casten:</p>
<pre><code class="language-cpp">class Unter
{
  ...
  Basis&amp; operator=(Basis&amp; other)
  {
    *this = dynamic_cast&lt;Unter&amp;&gt;(other);
    return *this;
  }
};
</code></pre>
<p>Achtung: Das Programm wird dir um die Ohren fliegen, wenn du dort etwas übergibst, was kein <em>echter</em> Unter ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294313</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 09:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 10:10:14 GMT]]></title><description><![CDATA[<p>Hey, ich glaub das wars! Vielen Dank, hast mein Praktiklum gerettet <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="🙂"
    /><br />
Kannst du mir vieleicht kurz etwas zu dem &quot;dynamic_cast&quot; erzählen? Dies hatten wir noch nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294321</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 10:10:14 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 10:13:59 GMT]]></title><description><![CDATA[<p>Wenn ihr das noch nicht hattet, bin ich nicht sicher, ob dein Prof die Lösung anerkennt (kannst ja nachher erzählen, was er erwartet hat).</p>
<p>Der dynamic_cast dient dazu, quer durch die Vererbungshierarchie umzuwandeln. Der Aufruf versucht, 'other' als eine Unter-Referenz anzusehen. Wenn es wirklich ein Unter-Objekt referenziert, ist alles gut und der normale Zuweisungsoperator wird aufgerufen. Wenn du dort ein Basis-Objekt übergibst, fliegt dir eine bad_cast Exception entgegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294326</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 10:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 10:14:45 GMT]]></title><description><![CDATA[<p>Schmeiß doch ganz kurz google an und such danach. <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="😉"
    /> <a href="http://www.google.com/search?q=dynamic_cast&amp;ie=UTF-8&amp;oe=UTF-8" rel="nofollow">http://www.google.com/search?q=dynamic_cast&amp;ie=UTF-8&amp;oe=UTF-8</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294328</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Tue, 29 May 2007 10:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 10:25:42 GMT]]></title><description><![CDATA[<p>Danke dir. Unser Prof ist ist ziemlich locker was das angeht, solange ich erklären kann was genau ich da mache.</p>
<p>In einer anderen Aufgabe habe ich ein ähnliches Problem:<br />
Ich habe eine Klasse TextObjekt die einen Überladenen Zuweisungsoperator enthält, der soweit auch funktioniert:</p>
<pre><code class="language-cpp">TextObjekt TextObjekt::operator=(const TextObjekt &amp;T){

      if(this == &amp;T){
          return *this;        
      }
      else{
          fileName_out = &quot;2_Verion_von&quot; + T.fileName_out;
          fileName_in = T.fileName_in;
          text = T.text;
          return *this;
      }                 
}
</code></pre>
<p>Aber dann sollen wir eine Funktion schreiben die den Inhalt des Attributs <strong>vector&lt;string&gt; text</strong> umdreht:</p>
<pre><code class="language-cpp">TextObjekt umdrehen(TextObjekt &amp;T){

           vector&lt;string&gt; TextBuffer;
           int i;
           i = text.size();
           while(i--){
               TextBuffer.at(i) =  text.at(i);
               cout &lt;&lt; &quot;Umgedreht: &quot; &lt;&lt; TextBuffer.at(i);          
           }                 
}
</code></pre>
<p>Jetzt habe ich das Problem, dass bei der Zuweisung in der main <strong>T2= umdrehen(T1);</strong> der Compiler meckert:</p>
<pre><code class="language-cpp">44 C:\Dev-Cpp\bin\10\blatt10_main_c_d_e.cpp no match for 'operator=' in 'T2 = umdrehen(((TextObjekt&amp;)(&amp;T1)))'
</code></pre>
<p>Hier macht sich dann wieder mein mangelndes Wissen über die Überladung bemerkbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294334</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 10:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 10:57:49 GMT]]></title><description><![CDATA[<p>In der Funktion fehlt aber eindeutig das return-Statement <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="😉"
    /> Und für die technische Seite empfehle ich dir die Funktionen reverse() und reverse_copy() aus der &lt;algorithm&gt;.</p>
<p>Was die Fehlermeldung angeht - zeig doch mal etwas mehr Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294345</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 10:57:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 11:07:29 GMT]]></title><description><![CDATA[<p>Dies ist die ganze Klasse TextObjekt die bisher funktioniert hat(Sorry etwas viel Code). Neu ist nur die Überladung des Zuweisungsoperators ganz unten, der ohne die Funktion umdrehen() (eigene cpp-Datei) auch gefunzt hat:</p>
<pre><code class="language-cpp">// textobject.h
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#ifndef _TEXTOBJECT_H_
#define _TEXTOBJECT_H_
using namespace std;

/*---------------------------------------------------------------------------*/
class TextObjekt{

      static int counter;   
      protected:
      vector&lt;string&gt; text;   //Inhalt der Datei
      string fileName_in;
      string fileName_out;     

      public:
      string write_mode;
      // Default Konstruktor 
      TextObjekt();         // Erzeugt leeses TextObjekt
      // Konstruktor
      TextObjekt(char* f_in_name, char* f_out_name);
      // Kopierkonstruktor
      TextObjekt(const TextObjekt &amp;kopie);
      // Destruktor
      ~TextObjekt(); 
      // Methoden
      void print_datei(void);
      void set_in_datei(const char *name_in_datei);
      void set_out_datei(const char *name_out_datei);
      string put_string_i(int i);
      char put_char_zeile_spalte(int zeile, int spalte);
      void append_string(string new_string);
      //vector&lt;string&gt; put_text(void);
      void replace(string new_string, int i);
      // Ueberladen des Indexoperator
      string&amp; operator[](int i);
      TextObjekt operator=(const TextObjekt &amp;T);
      void print_alles(void);
      friend void umdrehen(TextObjekt &amp;T);
};

int TextObjekt::counter = 0;

/*---------------------------------------------------------------------------*/

TextObjekt::TextObjekt(){

    fileName_in = &quot;no_in_file&quot;;
    fileName_out = &quot;no_out_file&quot;;
    text.clear();
    counter ++;
    cout &lt;&lt; &quot;**Defaultkonstruktor TextObjekt**: (&quot; &lt;&lt; counter &lt;&lt; &quot;)&quot;&lt;&lt; endl;

}

TextObjekt::TextObjekt(char* f_in_name, char* f_out_name){

    text.clear();

    fileName_in = string(f_in_name);
    fileName_out = string(f_out_name);
    set_in_datei(f_in_name);
    //set_in_datei(fileName_in.c_str());

    counter ++;
    cout &lt;&lt; &quot;**Konstruktor TextObjekt**: (&quot; &lt;&lt; counter &lt;&lt; &quot;)&quot;&lt;&lt; endl;                 
}

TextObjekt::TextObjekt(const TextObjekt &amp;kopie){

    //fileName_in = kopie.fileName_in;
	//fileName_out = kopie.fileName_out;
    text = kopie.text;
    text.clear();
    fileName_out = &quot;Kopie_von_&quot; + kopie.fileName_out;
    fileName_in = kopie.fileName_in;
    counter ++;
    cout &lt;&lt; &quot;**Kopierkonstruktor TextObjekt**: (&quot; &lt;&lt; counter &lt;&lt; &quot;)&quot; &lt;&lt; endl;                 
}
TextObjekt::~TextObjekt(){

    if(strcmp(fileName_out.c_str(),&quot;no_out_file&quot;) == true){
  		set_out_datei(fileName_out.c_str());
   	}
    counter --;
    cout &lt;&lt; &quot;**Destruktor TextObjekt**: (&quot; &lt;&lt; counter &lt;&lt; &quot;)&quot; &lt;&lt; endl;              
}
void TextObjekt::print_datei(void){

         for(int i=0; i&lt;text.size(); i++){
             cout &lt;&lt; text.at(i) &lt;&lt; endl;  
         }
}
// Datei einlesen
void TextObjekt::set_in_datei(const char *name_in_datei){
    // Datei nur zum Lesen oeffnen

    ifstream fin;
    string buffer2;

    fileName_in = string(name_in_datei);  //string erzeugen
    text.clear(); // Loescht alle Elemente

    fin.open(fileName_in.c_str());     // formatiert den Dateinamen in ein Zeichenkette-Format
    if(!fin){ 
          cout &lt;&lt; &quot;Konnte Datei nicht oeffnen!&quot; &lt;&lt; endl; 
    }
    else {
         while(getline(fin, buffer2)){ // Inhalt einlesen
         text.push_back(buffer2);             
         }
    }
    fin.close();  
}
void TextObjekt::set_out_datei(const char *name_out_datei){
    //Datei zum Schreiben oeffnen
    fstream fout;
    fileName_out = string(name_out_datei);

    	if(write_mode != &quot;out&quot;){	
		ofstream foutapp(fileName_out.c_str(),ios::app);
		if(!foutapp){
	   		cout &lt;&lt; &quot;Feherhaft geoeffnete Datei&quot; &lt;&lt; endl;
		   return;
		}

		for(int i = 0 ; i &lt; text.size() ; i++){
			foutapp &lt;&lt; text.at(i)&lt;&lt;endl;
		}
		foutapp.close();
	}
	else{
		ofstream fout(fileName_out.c_str());
		if(!fout){
	   		cout &lt;&lt; &quot;Feherhaft geoeffnete Datei&quot; &lt;&lt; endl;
		   return;
		}

		for(int i = 0 ; i &lt; text.size() ; i++){
			fout &lt;&lt; text.at(i)&lt;&lt;endl;
		}
		fout.close();
	}

  	cout &lt;&lt; &quot;Datei gespeichert in: &quot; &lt;&lt; fileName_out &lt;&lt; endl;

    /*fout.open(fileName_out.c_str());      // formatiert den Dateinamen in ein Zeichenkette-Format
    if(fout.good()){ 

         for(int i=0; i&lt;text.size(); i++){
                 fout &lt;&lt; text.at(i) &lt;&lt; endl; // in Filestream speichern        
         }
         cout &lt;&lt; &quot;Datei gespeichert in Datei: &quot; &lt;&lt; fileName_out &lt;&lt; endl;
         fout.close();
    }
    else {
         cout &lt;&lt; &quot;Konnte Datei nicht oeffnen!&quot; &lt;&lt; endl;             
    }*/
}

string TextObjekt::put_string_i(int i){

   	if(text.size() &gt; i)   // genug Zeilen vorhanden?
         return text.at(i-1);
    else
	return &quot;Zeile nicht vorhanden&quot;;
}
char TextObjekt::put_char_zeile_spalte(int zeile, int spalte){

	if(text.size() &gt; zeile &amp;&amp; text.at(zeile-1).size() &gt; spalte &amp;&amp; zeile &gt;= 0 &amp;&amp; spalte &gt;= 0){
		return text.at(zeile-1).at(spalte-1);
	}

	cout &lt;&lt; &quot;exestiert nicht&quot; &lt;&lt; endl;
    return '\0';

}
// String anhaengen
void TextObjekt::append_string(string new_string){

     text.push_back(new_string); // new_string an text haengen 
}
void TextObjekt::replace(string new_string, int i){

    if(text.size() &gt; i)   // genug Zeilen vorhanden?
         text[i-1]=new_string;
    else cout &lt;&lt; &quot;Zeile nicht vorhanden!&quot; &lt;&lt; endl;        
}
string&amp; TextObjekt::operator[](int i){

      if((i&gt;=0) &amp;&amp; (i&lt;text.size())){
          return text[i];          
      }
      else
      cout &lt;&lt; &quot;?&quot; &lt;&lt; endl;      
}
TextObjekt TextObjekt::operator=(const TextObjekt &amp;T){

      if(this == &amp;T){
          return *this;        
      }
      else{
          fileName_out = &quot;2_Verion_von_&quot; + T.fileName_out;
          fileName_in = T.fileName_in;
          text = T.text;
          return *this;
      }                 
}
void TextObjekt::print_alles(void){

     cout &lt;&lt; &quot;File_out_name: &quot; &lt;&lt; fileName_out &lt;&lt; endl;
     cout &lt;&lt; &quot;File_in_name: &quot; &lt;&lt; fileName_in &lt;&lt; endl;          
}

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294353</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 11:07:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 11:12:43 GMT]]></title><description><![CDATA[<p>Interessanter ist im Moment eher die main()-Funktion.</p>
<p>Und wie gesagt: in der umdrehen() fehlt eine return-Anweisung (oder soll der Compiler erraten, was er zurückgeben soll?).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294362</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 11:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 11:21:27 GMT]]></title><description><![CDATA[<p>Lol nee, also return T;<br />
In der main steht nicht viel drin.</p>
<pre><code class="language-cpp">int main(){

  int a = 0;  

	TextObjekt T1(&quot;kurzes_gedicht.txt&quot;,&quot;machmichnichtkaputt.txt&quot;), T2; 

	// Ausgabe des Inhalts: 
	cout &lt;&lt; endl &lt;&lt; &quot;Ausgabe T1 vor dem Aufruf der Funktion:&quot; &lt;&lt; endl &lt;&lt; endl; 
	T1.print_datei(); 
	cout &lt;&lt; endl &lt;&lt; &quot;Ausgabe T2 vor dem Aufruf der Funktion:&quot; &lt;&lt; endl &lt;&lt; endl; 
	T2.print_datei(); 

	T1.set_out_datei(&quot;machmichnichtkaputt.txt&quot;); 

	// umdrehen von T1: 
	T2= umdrehen(T1); 

    cin &gt;&gt; a; 

	cout &lt;&lt; &quot;Ende main ! &quot; &lt;&lt; endl; 

	return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294373</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 11:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 11:32:29 GMT]]></title><description><![CDATA[<p>Mit dem Inhalt der Funktion mußt du dich nochmal genauer beschäftigen - du packst den vector-Inhalt rückwärts in eine lokale Variable und gibt dann deinen Urprungszustand zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1294380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294380</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 11:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 12:02:38 GMT]]></title><description><![CDATA[<p>Um ehrlich zu sein hab ich mir bei der Funktion keine großartigen Gedanken gemacht, wie man sieht. Hab das ganze Wochenende nur Aufgaben in C++ für morgen gelöst und nu geht nix mehr.</p>
<p>Wenn ich also ein bischen nachdenke müsste ich doch so der Sache ein bischen näher kommen:</p>
<pre><code class="language-cpp">TextObjekt umdrehen(TextObjekt &amp;T){

           int i;
           i = text.size();
           while(i--){
               text.at((text.size())-i) =  text.at(i);
               cout &lt;&lt; &quot;Umgedreht: &quot; &lt;&lt; text.at(i);          
           }
      return T;                 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294402</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Tue, 29 May 2007 12:02:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Tue, 29 May 2007 12:09:15 GMT]]></title><description><![CDATA[<p>Wenn du beabsichtigst, die Daten im Ursprungsobjekt umzudrehen, geht es in die richtige Richtung. Aber dabei zerhaust du dir leider dein Array, weil du Teile überschreibst, bevor sie gelesen werden.</p>
<pre><code class="language-cpp">TextObjekt umdrehen(TextObjekt &amp;T)
{
    TextObjekt T2 = T;
    reverse(T2.text.begin(),T2.text.end());
    return T2;
}
</code></pre>
<p>Was die Funktion macht, kannst du selber herausfinden <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/1294412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294412</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 29 May 2007 12:09:15 GMT</pubDate></item><item><title><![CDATA[Reply to Zuweisungsoperator überladen on Wed, 30 May 2007 07:42:59 GMT]]></title><description><![CDATA[<p>Aber was hat es mit der Fehlermedlung auf sich? Ich habe doch einen überladenen Zuweisungsoperator. Oder ist der auch falsch? Oder muss es für jede Operation einen eigenen geben? Ich check das mit dem Überladen irgendwie net.<br />
sorry für meine lange Leitung gestern.<br />
Gruß Dominika</p>
<pre><code class="language-cpp">44 C:\Dev-Cpp\bin\10\blatt10_main_c_d_e.cpp no match for 'operator=' in 'T2 = umdrehen(((TextObjekt&amp;)(&amp;T1)))'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1294419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1294419</guid><dc:creator><![CDATA[paramit]]></dc:creator><pubDate>Wed, 30 May 2007 07:42:59 GMT</pubDate></item></channel></rss>