Overloading equality operator for classes

via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jan 29 09:59:20 PST 2015


On Thursday, 29 January 2015 at 17:48:04 UTC, rumbu wrote:
> bool opEquals(Object obj, int value)
> {
>     //do something to compare them
>     return false;
> }
>
>
> void main(string[] args)
> {
>     Object obj;
>     if (obj == 12) {}
>     //ERROR function object.Object.opEquals (Object o) is not 
> callable using argument types (int)	
> }
>
> According to paragraph (2) - 
> http://dlang.org/operatoroverloading.html#eqcmp), the compiler 
> must try obj.opEquals(12) and 12.opEquals(obj) but this is not 
> happening.
>
> Is there any other way to overload the equality operator? 
> (except overriding opEquals in each class intended to be 
> compared with an integer)

UFCS is not used when operators are involved. I think this is 
intentional.


More information about the Digitalmars-d-learn mailing list