指向通用记录的指针

时间:2014-08-28 10:56:42

标签: delphi pointers generics

请注意,这不是Pointer to generic type的副本。这是一个后续问题。

我知道可以定义指向任何泛型类型的指针 只是Delphi让它变得复杂。这本来是不可能的,但是由于编译器错误,选项漏掉了。
这就是链接问题的答案。

我的问题是:

如何定义指向通用记录的指针而不将其封装在周围的类中?

示例代码:

TGenericRecord<T> = record
  Data: integer;
  Procedure SomeMethod; inline; <<<< inlining is vital here. 
end;

我想获得一个指向TGenericRecord的类型安全指针 我想要将记录包装在周围的类中,因为在我的实验中,我发现它禁用了内联。

如何获取指向此记录的类型安全通用指针。

用例

{class} function create(size: integer): PGenericRecord{<T>}

除了堆栈之外,我希望能够在堆上创建记录。

1 个答案:

答案 0 :(得分:2)

我认为你最好的选择可能是这样的:

type 
  TMyStaticClass<T> = class
  public
    type
      TRec = record
        ....
      end;
      PRec = ^TRec;
  public
    class function NewRec: PRec; static;
  end;

我没有编译器方便检查这是否编译,但我觉得它应该......