Hi.
@uligerhardt
Die Variante mit array[0..3] of TFahrzeug funktioniert ganz gut. Ich kann die einzelnen abgeleiteten Klassen dort ablegen. Damit ergibt sich für mich jetzt ein weiteres Problem:
Nehmen wir an, das TFahrzeug eine Funktion vom Typ
Code:
function tanken():byte; virtual; abstract;
besitzt.
Für TAuto und TMotorrad nutze ich diese Funktion dann folgendermaßen
Code:
function tanken():byte; reintroduce;
Für die Klasse TLkw möchte ich aber
Code:
function tanken(adblue:boolean):byte; reintroduce;
nutzen.
Wenn ich die Objekte einzeln erzeugen würde, könnte ich die Funktion auch problemlos nutzen
Code:
var golf:TAuto;
var laster:TLkw;
begin
golf := TAuto.create;
golf.tanken()
laster := TLkw.create;
laster.tanken(TRUE);
Da ich aber jetzt die Deklaration über
Code:
var fahrzeugpool : array[0..3] of TFahrzeug;
und
Code:
fahrzeugpool[0] := TAuto.create;
fahrzeugpool[1] := TLkw.create;
nutze, bekomme ich bei
Code:
adblue_tanken := TRUE;
fahrzeugpool[1].tanken(adblue_tanken);
ein Compilerfehler. (Too many actual parameters)
Ist ja auch klar, da in der
TFahrzeug Funktion
tanken() kein weiterer Parameter vorhanden ist.
Wie kann ich dennoch auf die tanken-Funktion vom LKW mit dem Parameter zugreifen?
Grüße,
Martin
PS. habe jetzt alle Namen zur leichteren Lesbarkeit angepasst