Einzelnen Beitrag anzeigen

martin28

Registriert seit: 3. Jul 2009
Ort: In der Nähe von Berlin.
7 Beiträge
 
#4

AW: wie verschiedene Objekttypen sinnvoll speichern?

  Alt 2. Nov 2012, 22:25
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
Martin
  Mit Zitat antworten Zitat