加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 从Generic Container中检索TProc

发布时间:2020-12-15 04:12:31 所属栏目:大数据 来源:网络整理
导读:刚刚发现了一些有趣的东西 var Queue : TQueue TProc; MyProc : TProc;...MyProc := Queue.Dequeue; 我想你在这里看到了什么意思.但是,编译器认为我想在MyProc中存储Queue.Dequeue方法(键入“对象的过程”)并报告错误 E2010 Incompatible Types: 'TProc' und
刚刚发现了一些有趣的东西
var
  Queue  : TQueue <TProc>;
  MyProc : TProc;
...
MyProc := Queue.Dequeue;

我想你在这里看到了什么意思.但是,编译器认为我想在MyProc中存储Queue.Dequeue方法(键入“对象的过程”)并报告错误

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

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

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

有更优雅的解决方案吗?

解决方法

关于名称“Dequeue”是指函数本身还是函数的返回值,存在一些语法模糊性.而且由于你正在处理一个匿名方法指针,你可以指定一个正常的函数,它试图将其解释为函数赋值,而不是函数结果赋值.将它转换为指针是错误的解决方案,因为这会强制执行函数分配,这会在您尝试调用MyProc时导致各种有趣的错误.

修复它的正确方法是消除语法歧义.在Dequeue之后放置一个空括号,以便编译器确定您正在调用该函数而不是简单地通过名称引用它,然后它将起作用.

MyProc := Queue.Dequeue();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读