Moin,
ich würde in TFeld einen neuen Constructor einführen, dem du als Parameter den Feldplatz übergibts. Sollte auf dem Feld schon was sein, löst er einfach den Destructor aus, so dass bei der Zuweisung das Feld dann wieder frei ist. Durch die Ableitung der TBomb von TFeld erbt TBomb den Constructor einfach.
Delphi-Quellcode:
type
TFeld = class
Position: TPoint;
public
Constructor Create(PFeld: TFeld); override; // oder reintroduce; (je nach Vorfahr)
end;
TBomb = class (TFeld)
ExploTime: Integer;
end;
TSpielfeld = array[0..1,0..1] of TFeld;
var
S: TSpielFeld;
Constructor TFeld.Create(PFeld: TFeld);
begin
inherited;
if assigned(PFeld) then
FreeAndNil(PFeld);
end;
// Der Constructor entfernt ein evtl. vorhandenes Feld für uns automatisch
S[0,0] := TBomb.Create(S[0,0]); //etc.