gpt4 book ai didi

delphi - delphi记录之间的交叉引用

转载 作者:行者123 更新时间:2023-12-03 15:44:06 25 4
gpt4 key购买 nike

假设我有一个记录 TQuaternion 和一个记录 TVector。四元数有一些带有 TVector 参数的方法。另一方面,TVector 支持一些具有 TQuaternion 参数的操作。

知道 Delphi (Win32) 不允许前向记录声明,我该如何优雅地解决这个问题?

使用类在这里并不是一个真正的选择,因为我真的想在这种罕见的情况下使用操作符重载,这种情况实际上很有意义。

现在,我只是将这些特定的方法从记录中移出并移入单独的函数中,这是一种很好的老式方法。欢迎更好的建议。

最佳答案

如果运算符(operator)不是实际问题,您可以使用记录助手来解决此问题。

type
TVector = record
end;

TQuaternion = record
procedure UseVector(var V: TVector);
end;

TVectorHelper = record helper for TVector
procedure UseQuaternion(var Q: TQuaternion);
end;

这只会解决循环依赖,并且不适用于运算符。它还有一个缺点,即您不能为 TVector 提供任何其他记录助手,至少不能在同一个地方使用它们。

关于delphi - delphi记录之间的交叉引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420650/

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