[fpc-pascal] commutative operators
Honza
befelemepeseveze at gmail.com
Thu Dec 30 08:04:03 CET 2010
2010/12/29 David Emerson <dle3ab at angelbase.com>:
> On Wed 29 Dec 2010, Honza wrote:
>> IIRC you don't have to.
>
> well... I do have to. I get "can't determine which overloaded function to call"
> because I have a lot of similar-looking functions and := operators
You're right, I verified it just now. I didn't remembered it correctly.
FYI, bellow is the verification example used, later modified to
compile successfully with trunk FPC. Introduction of the ':='
operators for T1 and T2 enabled the '+' operator commutativity.
program project1;
{$mode objfpc}{$H+}
type
T1 = record
Dummy: Boolean;
Value: Integer;
end;
T2 = record
Dummy: String;
Value: Integer;
end;
operator +(A: T1; B: T2): Integer;
begin
Result := A.Value + B.Value;
end;
operator :=(X: T1): T2;
begin
Result.Value := X.Value
end;
operator :=(X: T2): T1;
begin
Result.Value := X.Value
end;
var
V1: T1;
V2: T2;
begin
V1.Value := 2;
V2.Value := 3;
Writeln(V1 + V2, ' ', V2 + V1);
end.
--
bflm
freepascal-bits.blogspot.com
More information about the fpc-pascal
mailing list