我想创建一个对象工厂武器类,它可以实例化我分配给它的无限量的射弹类。武器类和射弹类被用作“抽象”类(我知道 Delphi 7 不支持抽象类)。
现在我不知道如何实现正确实例化 projectileType 的 Weapon.shoot()(SimpleWeapon 类使用 SimpleProjectile 作为 projectileType)
procedure Weapon.shoot();
var g : Projectile;
begin
// instanciate ammo type
g := projectileType.create();
g.init();
end;
首先, projectileType.create() 返回一个我不能直接分配给 Projectile 变量的 TObject,并且通过 projectileType(g) 转换 TObject 也不起作用。
其次,我怎样才能实现将 g 转换为 projectileType,以便我可以使用该特定类的 init() 方法而不是它的父类(Projectile)?