mschnell hat geschrieben:mse hat geschrieben:Das kompiliert nicht, da die Typen nicht passen.
Bei Delphi Class Typen (auch bei anderen ? ) wird bei Bedarf automatisch der Pointer verwendet, ohne dass man das explizit angibt. Nicht sauber, aber praktisch. (obj3.doit bedeutet da ja eigentlich obj3^.doit)
Ist die Regel das bei mse-Pascal strenger und/oder klarer definiert ?
FPC {$mode objpas} macht das AFAIK auch nicht. Für Objekte die immer auf dem heap instantiiert sind gibt es "class", welches implizite Dereferenzierung bietet. Es gibt zwar Opposition dagegen, da "class" = "^object" und daher redundant ist.
Code: Alles auswählen
type
objty = object
f1: int32;
constructor create(i: int32);
destructor destroy();
method doit();
end;
ctest = class(objty)
end;
[...]
var
test1: ctest;
begin
test1:= ctest.create(123);
test1.doit();
test1.destroy();