gpt4 book ai didi

delphi - 从通用容器中检索 TProc

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

刚刚发现了一些相当有趣的事情:

var
Queue : TQueue <TProc>;
MyProc : TProc;
...
MyProc := Queue.Dequeue;

我想你已经明白这里的意图了。但是,编译器认为我想将 Queue.Dequeue 方法(类型“procedure of object”)存储在 MyProc 中并报告错误

E2010 Incompatible Types: 'TProc' und 'Procedure of object'

我想出的解决方法是这样的

MyProc := TProc (Pointer (Queue.Dequeue));

有更优雅的解决方案吗?

最佳答案

关于名称“Dequeue”是指函数本身还是指函数的返回值,在语法上存在一些歧义。由于您正在处理一个可以为其分配普通函数的匿名方法指针,因此它试图将其解释为函数分配,而不是函数结果分配。将其转换为指针是错误的解决方案,因为这会强制执行函数分配,然后当您尝试调用 MyProc 时会导致各种有趣的错误。

解决这个问题的正确方法是消除语法歧义。在 Dequeue 之后放置一个空括号,以便编译器确定您正在调用该函数,而不是简单地通过名称引用它,然后它就会工作。

MyProc := Queue.Dequeue();

关于delphi - 从通用容器中检索 TProc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2281209/

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