Am 14.10.2014 12:41 schrieb "Marco van de Voort" <[email protected]>:
>
>
> I recently had to dive a bit into C++ again, and reconnected with a
feature
> I liked at first sight, the C++ covariance of virtual methods (changing
the
> return type of a overriden method to a descendant of the original type).
> Googling a bit it seems that some languages(C#) also seem to allow this
for
> parameters. (not just return types)
>
> I suddenly wondered why it was never proposed or talked about for FPC,
> since it seems such a nice feature. Is there something particularly wrong
> with it?
At least at first sight there don't seem to be any real (technical) reasons
to not covariance for return values. Parameters would be a different topic
though...
Just so I get the idea right:
=== code begin ===
type
TBar = class
function Test: TObject; virtual;
end;
TFooBar = class(TBar)
function Test: TStrings; override;
end;
//...
var
b: TBar;
f: TFooBar;
s: TStrings;
begin
f := TFooBar.Create;
b := f;
// this would work
s := f.Test;
// but this not
s := b.Test;
end.
=== code end ===
Would this be the correct equivalent in Object Pascal?
Regards,
Sven
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel