gpt4 book ai didi

delphi - Delphi XE 是否支持指向泛型类型的指针?

转载 作者:行者123 更新时间:2023-12-03 14:59:03 26 4
gpt4 key购买 nike

我使用的是 D2010,我必须一直保留到 64 位版本问世。

对于泛型,不支持指向泛型类型的指针,但我发现它们确实非常有用。我在 SO(2009 年发布)的其他地方读到 Barry Kelly 爵士认为这种情况将来很可能会改变。有谁知道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;

您不能拥有泛型函数,但可以拥有泛型方法。

因此,您可以拥有指向泛型的指针,但请记住,使用这种肮脏的技术没有类型安全性。

关于delphi - Delphi XE 是否支持指向泛型类型的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com