我在D2010,我必须坚持到64位出来.
使用泛型,不支持指向泛型类型的指针,我发现它们确实非常有用.我在其他地方读过SO(2009年的帖子)巴里凯利爵士认为这可能会在未来发生变化.有谁知道XE是否支持这个?
如果没有,我真的希望他们进入XE2.
谢谢.
解决方法
在XE(2011):
这有效:
type TTest1<T> = record FX : T; end; TTest2<T> = array of T;
这不起作用:
type TTest3<T> = ^TTest1<T>; TTest4<T> = ^TTest2<T>; TTest<T> = ^T;
因此,指向泛型的指针尚不可能.
但是你可以做到以下几点:
type TMyClass = class public class function GetAddr<T>(const AItem: T): Pointer; class function GetP<T>(const APtr: Pointer): T; end; class function TMyClass.GetAddr<T>(const AItem: T): Pointer; begin Result := @AItem; end; class function TMyClass.GetP<T>(const APtr: Pointer): T; begin Result := T(APtr^); end;
因此,您可以使用泛型指针,但请记住,使用这种脏技术,您没有类型安全性.