== Operator überladen für double Vergleich
-
Hallo zusammen,
ich würde gerne in meiner Klasse zwei Doublewerte auf Gleichheit überprüfen. Dafür habe ich eine eigene Methode geschrieben.
Bisher habe ich immer die Funktion "doubleVergleich(doublezahl, 0)" aufgerufen. Ich fände den Code aber mit der Operatorüberladung schöner.Gibt es da irgendwelche Möglichkeiten?
Vielen Dank
-
Es ist ziemlich unklar, was du vorhast. Zwei double-Werte kannst du einfach so vergleichen, es braucht keine Methode dafür, und es ist auch nicht möglich, dafür einen
==
Operator zu überladen.
-
Nein. Intrinsische Operatoren koennen nicht ueberschrieben werden. Wuerde auch zu verdammt vielen Zweideutigkeiten fuehren. Deine Funktion ist schon eine ganz saubere Loesung (vielleicht waere ein kuerzerer Name angenehmer), ansonsten kannst Du auch ein Template o.ae. schreiben, das eine Fliesskommazahl kapselt und mittels einem vorgegebenen Epsilon vergleicht, und dafuer
operator==
ueberladen. (Ich kann eine Schablone dafuer vorlegen.)
-
@Philipp2706
Denoperator ==
in so einer Weise zu überladen, auch für eigene Typen, halte ich für ganz ganz groben Unfug. z.B. schonmal deswegen weil dann ausa == b
undb == c
nicht mehra == c
folgt. Was sehr problematisch werden kann. Dadurch kann es uA. zu allen möglichen Problemen mit Funktionstemplates kommen -- die sich gerne mal darauf verlassen dass==
eben auf Gleichheit prüft und nicht auf "irgendwie so ein bisschen ähnlich".p.s: Das gilt natürlich nicht nur für
operator ==
, sondern mehr oder weniger für alle Operatoren. Speziell sämtliche Vergleichsoperatoren, Zuweisung, Dereferenzierung oder auchnew
unddelete
. Aber auch die anderen sollten nicht unbedacht mit unüblicher Semantik definiert werden.