Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#5

AW: wie verschiedene Objekttypen sinnvoll speichern?

  Alt 2. Nov 2012, 22:42
Für TAuto und TMotorrad nutze ich diese Funktion dann folgendermaßen
Code:
function tanken():byte; reintroduce;
Vermutlich willst du override statt reintroduce . Sonst muss die Methode in der Basisklasse ja nicht als virtuell deklariert sein.

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?
Entweder casten:
TLkw(fahrzeugpool[1]).tanken(adblue_tanken); Oder du nutzt eine Zwischen-Variable:
Delphi-Quellcode:
var
  laster: TLkw;
begin
 laster := TLkw.Create;
 fahrzeugpool[1] := laster;
 laster.tanken(True);
PS. habe jetzt alle Namen zur leichteren Lesbarkeit angepasst
Du wirst mir noch dankbar sein.
Uli Gerhardt
  Mit Zitat antworten Zitat