考虑以下类型
type
TRecs = array[0..100000] of TRec;
PRecs = ^TRecs;
TRecObject = class
private
fRecs: PRecs;
public
constructor Create;
property Recs: PRecs read fRecs;
end;
我想让TRec成为通用参数。问题是我需要放在类范围之外。因为像
这样的东西 T<MyType>Object = class
private
fRecs: ^array[0..100000] of MyType;
public
property Recs: ^array[0..100000] of MyType read fRecs
end
是不可能的。
使PRecs成为参数也不是一个选项,因为在我的实际对象中存在与TRec相关的代码。
现代Object Pascal中是否有解决方案?如果没有,只是好奇是否有任何其他泛型语言可以解决这样的问题?
答案 0 :(得分:3)
我不完全确定我理解你的问题,但我认为你正在寻找这样的事情:
type
TMyObject<T> = class
public
type
PArr = ^TArr;
TArr = array[0..100000] of T;
private
fRecs: PArr;
public
property Recs: PArr read fRecs
end;
那就是说,我看不出那个班级的意义。您可以使用TList<T>
中的Generics.Collections
。
如果您需要一个数组,那么您可以根据需要使用动态数组:TArray<T>
或array of T
。
答案 1 :(得分:2)
你的通用语法有点混乱。试试这个:
TRecArray<T> = array[0..100000] of T;
TGenericRecObject<T> = class
private
FRecs: TRecArray<T>;
public
property Recs: TRecArray<T> read FRecs;
end;