Einzelnen Beitrag anzeigen

beo

Registriert seit: 7. Sep 2006
13 Beiträge
 
#1

Objektorientierung Klasse "noch oben" casten

  Alt 22. Jun 2010, 11:31
Delphi-Version: 2005
Servus,

ich habe nal noch eine Frage zum Thema objektorientierung.

Delphi-Quellcode:
TFoo = class(TObject)
procedure test;
end;

TBar = class(TFoo)
procedure test; override;
end;
Wenn ich nun eine Instanz von TBar habe, und diese an eine Methode reiche, die TFoo entgegennimmt:

Delphi-Quellcode:
procedure TFooBarHandler.DoSomething(inst:TFoo)
begin
  inst.Test;
end;

FooBarHandler.DoSomething(TBar.Create);
Wie bekomme ich es hin, dass zunächst die überschriebene Methode "test" von meiner TBar-Instanz gerufen wird.


Ich möchte als quasi so was hier machen:

Delphi-Quellcode:
TFBClass = class of TFoo;

procedure TFooBarHandler.DoSomething(inst:TFoo)
var
  c:TFBClass;
begin
  c := TFoo.GetClassInfo; // <- liefert z.b. TBar

  c(inst).Test; // <- cast zu einer klasse, die erst zur laufzeit bekannt ist.
end;
Ich glaube ich habe nur ein Brett vorm Kopf, denn eigentlich ist doch eine völlig triviale Situation oder?

Vielen Dank dpler.
Christian
  Mit Zitat antworten Zitat