E2058 Class, interface and object types only allowed in type section (Delphi)

From RAD Studio

Go Up to Error and Warning Messages (Delphi)

Class or object types must always be declared with an explicit type declaration in a type section - unlike record types, they cannot be anonymous.

The main reason for this is that there would be no way you could declare the methods of that type - after all, there is no type name.


program Produce;

var
  MyClass : class
    Field: Integer;
  end;

begin
end.

The example tries to declare a class type within a variable declaration - that is not legal.


program Solve;

type
  TMyClass = class
    Field: Integer;
  end;

var
  MyClass : TMyClass;

begin
end.

The solution is to introduce a type declaration for the class type. Alternatively, you could have changed the class type to a record type.