【发布时间】:2020-06-24 15:08:22
【问题描述】:
Delphi Rio - 我正在编写一个类,其中一个函数是 AddFilter。当 AddFilter 类被执行时,根据各种因素,它要么创建一个过滤器,要么创建一个切片器。 (想想 Excel 过滤器和切片器)。我希望该函数返回新创建的对象,即 tFilterElement 或 tSlicerElement,它们是独立的、不相关的类。我的挑战是如何拥有一个可以返回新创建的对象的函数;哪个可以是 2 个不同的类之一?我想在这里使用变体,但我无法让它工作。伪代码是
function TPivotTable.addFilter(params...):Variant;
var
E1 : tFilterElement;
E2 : tSlicerElement;
begin
... if this can be a Filter
E1 := TFilterElement.Create(params);
result := E1;
... else
E2 := TSlicerElement.Create;
result := E2;
end;
我试过了
result := E1 as Variant;
还有
result := Variant(E1);
但两者都不起作用。有没有办法做到这一点?我与变体无关,只是想不出任何其他可行的方法。
【问题讨论】: