在后代过程之前调用祖先虚拟过程,而不在后代中使用继承

问题描述 投票:0回答:1

在Windows下使用FreePascal,我想在后代Proc/Func之前调用虚拟过程/函数,避免在后代中使用

inherited

必须先激发虚拟体,然后再激发后代。

祖先:

procedure AfterRefresh( d:tdataset); virtual;

...

procedure Ancestror.AfterRefresh(d:dataset);
begin
  doSum();
  writeLn('I am in ancestror');
end;

后裔:

descendant.afterRefresh(d:tdataset); override;
begin
  writeLn('I am in descendant');
end;

我期望得到这样的结果:

I am in ancestror
I am in descendant
virtual procedure freepascal
1个回答
0
投票

您所要求的通常不受支持(但并非不可能,如果您愿意破解 vtable 等),但违背了多态性及其用途的精神。

您应该考虑针对您的情况采取完全不同的方法。我建议将您想要的过程按照您想要的顺序放入一个列表中,然后您可以运行该列表,按顺序调用每个过程。

© www.soinside.com 2019 - 2024. All rights reserved.