== 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.


  • Mod

    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
    Den operator == 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 aus a == b und b == c nicht mehr a == 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 auch new und delete. Aber auch die anderen sollten nicht unbedacht mit unüblicher Semantik definiert werden.


Log in to reply