我如何声明一个函数,该函数将一个尚未识别类型的变量作为参数
How do i declare a function which takes a variable of a yet unidentified type as parameter
问题如题。 O 收到错误:预期类型标识符,(我认为)来自在类型声明之前读取的函数声明。
type
TForm1 = class(TForm)
//other declarations
function ItemThere(x: TItem): boolean; // here it says TItem is unknown
end;
type
TItem = class
Name : String;
Description : String;
constructor Create;
end;
另外我想让你知道我是一个相当没有经验的程序员。
我怎样才能解决这个问题?我应该将 TItem 的声明移到 TForm1 之上吗?感谢您的帮助。
Delphi 的编译器需要在使用 之前了解类型 。有两种方法可以使用您的代码完成此操作。
将声明移到首次使用的位置上方:
type
TItem = class
Name : String;
Description : String;
constructor Create;
end;
TForm1 = class(TForm)
//other declarations
function ItemThere(x: TItem): boolean;
end;
使用所谓的 forward declaration,它基本上只是告诉编译器您正在使用稍后定义的 class(在同一类型中声明部分):
type
TItem = class; // forward declaration
TForm1 = class(TForm)
//other declarations
function ItemThere(x: TItem): boolean;
end;
TItem = class // Now define the class itself
Name : String;
Description : String;
constructor Create;
end;
问题如题。 O 收到错误:预期类型标识符,(我认为)来自在类型声明之前读取的函数声明。
type
TForm1 = class(TForm)
//other declarations
function ItemThere(x: TItem): boolean; // here it says TItem is unknown
end;
type
TItem = class
Name : String;
Description : String;
constructor Create;
end;
另外我想让你知道我是一个相当没有经验的程序员。 我怎样才能解决这个问题?我应该将 TItem 的声明移到 TForm1 之上吗?感谢您的帮助。
Delphi 的编译器需要在使用 之前了解类型 。有两种方法可以使用您的代码完成此操作。
将声明移到首次使用的位置上方:
type TItem = class Name : String; Description : String; constructor Create; end; TForm1 = class(TForm) //other declarations function ItemThere(x: TItem): boolean; end;
使用所谓的 forward declaration,它基本上只是告诉编译器您正在使用稍后定义的 class(在同一类型中声明部分):
type TItem = class; // forward declaration TForm1 = class(TForm) //other declarations function ItemThere(x: TItem): boolean; end; TItem = class // Now define the class itself Name : String; Description : String; constructor Create; end;