gpt4 book ai didi

delphi - 如何确保 future 的继承覆盖过程?

转载 作者:行者123 更新时间:2023-12-03 15:39:00 24 4
gpt4 key购买 nike

我正在编写一个带有一些虚拟/抽象过程的类,我希望这些过程能够被覆盖。然而,它们也可能不会被覆盖,这也很好。问题在于查明这些过程之一是否实际上被覆盖。如果它们没有被覆盖,我不应该尝试调用这些过程,而需要采取不同的措施。如果我尝试调用其中一个并且没有被覆盖,我会收到Abstract Error

有没有办法可以检测这些过程是否被覆盖?

以下是声明方式的示例:

type
TMyClass = class(TObject)
protected
procedure VProc; virtual;
procedure VAProc; virtual; abstract;
end;

最佳答案

你可以做这样的事情。请注意,我已经删除了“摘要”。它可能适用于“抽象”,但我还没有尝试过。

type 
TMyClass = class(TObject)
protected
procedure VProc; virtual;
procedure VAProc; virtual; //abstract;
end;


function GetVAProcAddress(Instance: TMyClass): pointer;
var
p: procedure of object;
begin
p := Instance.VAProc;
result := TMethod(p).Code;
end;


//in one of the TMyClass methods you can now write:

if GetVAProcAddress(self) <> @TMyClass.VAProc then

关于delphi - 如何确保 future 的继承覆盖过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9453653/

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