Hello,
If write a declaration without result it complains about invalid syntax; if I add a result it says "impossible operator overload". Does FPC allow overloading the += operator? If not, why?
Best regards,
Flávio

Mailing lists / fpc-pascal / 2011-09
6 messages · 4 people · –
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Hello,
If write a declaration without result it complains about invalid syntax; if I add a result it says "impossible operator overload". Does FPC allow overloading the += operator? If not, why?
Best regards,
Flávio
2011/9/10 Flávio Etrusco
You do not need overload the += operator, just do it in := operator.Marcos Douglas
If write a declaration without result it complains about invalid syntax; if I add a…
Flávio Etrusco wroteDoes FPC allow overloading the += operator? If not, why?
It is translated into "x:=x+y" at the parser level, and overload resolving happens later. So once you overload "+" (and := if required), "+=" should also work.Jonas
Yes, I realize this. I'm revisiting the "StringBuilder" issue, and "+=" can't be efficiently implemented with two operations (since concatenating the operand would be unexpected to the user...).
-Flávio
"+=" can't be efficiently implemented with two operations (since concatenating the operand would be unexpected to the user...).
Why not use "inc(x,y)"?
AFAICS it's not possible either. (Notice I'm talking about operating on an 'object').
What I meant is:
MyStringBuffer += 'String';
Is replaced with:
MyStringBuffer := MyStringBuffer + 'String';
What if is was:
MyStringBuffer := OtherStringBuffer + 'String';So concatenating the 'String' in the StringBuffer's internal buffer would be unexpected IMO (but maybe just making it safe, even though unexpected, would be ok).
Also, since the assignment operator for same type can't overload, I can't make adjustments to avoid "sharing" the buffer so I'm left with using an AnsiString as buffer, or use some self-pointing canary which must be checked on every buffer operation.
-Flávio