Mit erstellter Klasse rechnen.
-
Ich hab eine Klasse erstellt und auch einige Operatoren überladen, aber bei diesen Problem weis ich keine richtige Lösung. Ich will z. B. int und meine Klasse mischen.
TZahl aZahl;aZahl = aZahl *16;und so ähnlich hab ich versucht den Operator zu bauen.
TZahl TZahl::operator* (const TZahl aZahl,const int a) { TZahl bZahl; bZahl = a; return (aZahl*bZahl); }Eine Notlösung hätte ich und zwar, dass ich für jeden int wert eine eigene Variable benutze und das ist mir zu umständlich.
So brauch ich eine bessere Lösung. Ich hoffe mir kann jemand helfen.
-
Wo ist das Problem?
class Zahl { public: Zahl( int _value ) : value( _value ) {} friend Zahl operator*( const Zahl& lhs, const Zahl& rhs ) { return Zahl( lhs.value*rhs.value ); } private: int value; };
-
Du hast das falsch verstanden.
Zurzeit kann ich alle Grundrechenarten benutzen, aber nur mit dem selben Type.TZahl a,b,c; double d; a=5; b=7; c=a*b; //oder c=a/b; //oder c=a+b; //oder c=a-b; d=c;,aber wenn ich ’b’ als double deklariere geht das nicht mehr.
Und das ist mein Problem. Da muss ja irgend ein Operator dazu.
-
Im ersten Post fragtest du wegen int. Das geht mit meinem Beispiel weil Integer implizit in Zahl umgewandelt werden (siehe Konstruktor). Kannst ja beliebig viele Konstruktoren hinzufügen oder du versuchst es per Template.
-
Du kannst dir entweder einen Ctor definieren, der einen double übernimmt, dann wandelt der Compiler das um, bevor er es an deinen Operator übergibt. Oder du überlädst den Operator für alle Kombinationen aus double und TZahl und siehst selber zu, wie du mit double-Werten umgehen kannst.
Letzterer Fall würde so aussehen:
TZahl TZahl::operator* (const int a)//btw, ein Member-Operator bekommt nur ein zusätzliches Argument { TZahl bZahl = *this; bZahl.value*=a; return bZahl; }(meist implementiert die Klasse übrigens operator *= und führt * darauf zurück ;))
-
Gut, aber noch eine Frage:
Das geht das ja so nur für eine RichtungTZah a,c; double b; a=5; c =b*a; //entscheidend ist das beim dividieren und Subtrahieren.Wie geht das den für die andere Richtung.
-
Wie in die Richtung?
TZahl a = 5; a = a * 10; a = 10 * a;Meinst du das? Das geht beides... Hättest du dir den Codefetzten von mir mal angeschaut.
