Hallo zusammen
Für mein Informatik2 Praktikum sollten wir eine Klasse safe_int schreiben, in der Zahlbereichsüberschreitungen während des Rechnes mit Integerzahlen erkannt werden. Dieses Programm habe ich mit viel Unterstützung zum Laufen gekriegt. In der neuen Aufgabe sollen wir die bisher als friend vereibarten Operatorfunktionen in Komponentenfunktionen umwandeln und die Klasse dann noch erweitern. Allerdings habe ich keine Ahnung wie das funktioniert bzw. wie ich das aufschreiben soll. Ich poste mal die Klasse safe_int und eine Operatorfunktion safe_int operator+:
class safe_int{
   private:
      int val;                                     //der eigentliche Zahlwert eines safe_int
      static const string limit_string;    //die max Zahl als String (21474.....)
      static string lim_to_string();       //die Umwandelfunktion für zahl in string
      static int divi(int,int);
      static int mod(int,int);
   public: 
      static const int lim;                    //die max Zahl als in (21474......)      
      class overflow {                        //die Fehlerklasse
      	public:
		int op1,op2;
		char func[30];
		overflow(char *f,int i,int j){
			op1=i;
			op2=j;
			strcpy(func,f); 
		                             }
	    };//of class overflow 
      safe_int(string zahl);                                   //der Stringkonstruktor
      safe_int() throw() {val=0;}                         //der Defaultkonstruktor
      friend safe_int operator+(safe_int,safe_int);   //Um diese Funktion geht es!
      friend safe_int operator-(safe_int,safe_int);
      friend safe_int operator*(safe_int,safe_int);
      friend safe_int operator/(safe_int,safe_int);
      friend safe_int operator%(safe_int,safe_int);
      friend ostream& operator<<(ostream&,safe_int);
      friend istream& operator>>(istream&,safe_int&);         
};Und im Anschluss gleich die friend safe_int operator+(safe_int,safe_int) Funktion:
safe_int operator+(safe_int a,safe_int b){
    safe_int erg;
    if((b.val>0 && a.val>safe_int::lim-b.val) || (b.val<0 && -a.val>safe_int::lim+b.val)){
       throw safe_int::overflow("Addition",a.val,b.val);       
                                                                      }
    erg.val=a.val+b.val;                                                                  
return erg;    
}Es wäre super wenn mir jemand diese Operatorfunktion in eine Komponentenfunktion umwandeln könnte. Das geht bestimmt sehr leicht, allerdings haben im Semester aus Krankheitsgründen die Profs gewechselt und der neue ist ein Buch mit sieben Siegeln. Nicht nur für mich 
thx
Epi
 
		 
		
		
	 ja auch schon beim >>Operator benutzt und da auch nocht nicht kapiert. Warum ist a=b+c+d nur möglich wenn man eine Referenz zurückgibt? hmm...ich les mir das Kapitel mit Referenzen nochmal durch, aber wenn du eine gut verständliche Erklärung kennst wäre ich dankbar.
  ja auch schon beim >>Operator benutzt und da auch nocht nicht kapiert. Warum ist a=b+c+d nur möglich wenn man eine Referenz zurückgibt? hmm...ich les mir das Kapitel mit Referenzen nochmal durch, aber wenn du eine gut verständliche Erklärung kennst wäre ich dankbar.

