割り当てた発射物クラスを無限にインスタンス化できるオブジェクト ファクトリの武器クラスを作成したいと考えています。武器クラスと発射体クラスは「抽象」クラスとして使用されます (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() メソッドを使用できます。