
Zitat von
Robert_G:

Zitat von
maximov:

Zitat von
Robert_G:
...
Der IS Operator kann ja auch nicht wissen was du da zur Laufzeit machst.

wieso nicht ? Der Is-operator ist doch der laufzeit-klassenprüf-operator.
Sicher. Trotzdem kann es beim Kompilieren knallen wenn es für den Compiler absolut unmöglich erscheint, dass A von B abgeleitet ist.
Nachtrag:
Bevor die nächste Frage kommt. Einfach selbst testen
...
Da is der kompiler natürlich ein bisschen übereifrig - aber recht hatta ja. Wenn man es wirkt wissen will, dann muss man ihn halt täuschen:
Delphi-Quellcode:
...
var
X : TComparedType;
begin
if X is TBase then
Writeln('ist TBase'); // geht
if TObject(X) is T1stDescendant then
Writeln('ist T1stDescendant'); // knallt
end.
Aber das führt zu nix, da man, wie schon gesagt wurde, gleich
InheritsFrom benutzen kann. Gut das wir das geklärt haben
mâxîmôv.
{KDT}