我正在编写一些针对两个版本非常相似的硬件的软件,在我使用 API 初始化硬件之前,我无法知道我将返回哪种类型的硬件。
因为硬件非常相似,我计划有一个父类(TParent),它有一些抽象方法(对于硬件不同的地方),然后是两个子类(TChildA,TChildB),它们以硬件相关的方式实现这些方法。
所以我会首先实例化一个 TParent 的对象,检查它是什么类型,然后将其转换为正确的孩子。
但是,当我这样做并调用在子类中完全实现的抽象方法之一时,我得到一个 EAbstractError。
例如:
myHardware:=TParent.Create();
if myHardware.TypeA then
myHardware:=TChildA(myHardware)
else
myHardware:=TChildB(myHardware);
myHardware.SomeMehtod();
我假设我不能将父类转换为子类,并且可能有更好的方法来做到这一点。任何指针?