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 := Queue.Dequeue();