Am 30.10.2013 08:47, schrieb Xiangrong Fang:
Hi All,
I have the following class:
type
generic TVector<T> = class
private type
TDataType = array of T;
private
FData: TDataType;
... ...
public
... ...
function Slice(APos: Integer = -1; ACount: Integer = -1): TDataType;
end;
The Slice() method return a portion of the data as a dynamic array.
My question is, as I define TDataType as PRIVATE type, why it is still
usable outside of the class? In the main program I did:
type
TIntVector = specialize TVector<Integer>;
var
iv: TIntVector;
ia: array of Integer;
begin
iv := TIntVector.Create;
... ...
ia := iv.Slice;
end.
This will assign a TDataType (is it TVector$TDataType or
TIntVector$TDataType? I don't know) to an "array of Integer". Why this
assignment works?
i.e. how does the type system work?!
It's a bit annoying that the usage private/protected types in
public/published functions is allowed... (this is however Delphi
compatible) Maybe this should be adjusted for non-Delphi modes for
language consistency... (maybe at least as a warning which could be
elevated to an error if someone wants)
Regards,
Sven
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal