除了第一个type外,把你后面的type都去掉,如下:{ Forward class declarations }
type
TPart = class ; //-->如此声明为何不行?????
//^^^^^^^^^^^^^上面这一句也可以不要。 PTPart = ^TPart; TPart = class
private
fstrName:string;
fChildList:TList;
protected
public
constructor Create(strName:string = '');
destructor Destroy; virtual;
property Name:string read fstrName;//全部名称:编号+设备类别
//子设备管理
procedure Add(NewPart:^TPart{??????只能用type定义的东西
>});virtual;
procedure Remove(NewPart:^TPart);virtual;
//function Iterator<Equipment*>* CreateList();virtual;
end;
type
TPart = class ; //-->如此声明为何不行?????
//^^^^^^^^^^^^^上面这一句也可以不要。 PTPart = ^TPart; TPart = class
private
fstrName:string;
fChildList:TList;
protected
public
constructor Create(strName:string = '');
destructor Destroy; virtual;
property Name:string read fstrName;//全部名称:编号+设备类别
//子设备管理
procedure Add(NewPart:^TPart{??????只能用type定义的东西
>});virtual;
procedure Remove(NewPart:^TPart);virtual;
//function Iterator<Equipment*>* CreateList();virtual;
end;
procedure Add(NewPart:^TPart{??????只能用type定义的东西
>});virtual
procedure Add(NewPart:PPart);virtual;
或者你不怕麻烦也可以写成:
procedure Add(NewPart:Pointer);virtual;
这种写法使用时要进行强制转换。过程参数可以不使用在type中定义的类型,你的写法当然是可以
应该是procedure Add(NewPart:PTPart);virtual;
procedure Add(NewPart:^TPart);virtual;
不能通过;[Error] Composite.pas(27): Identifier expected but '^' found;
过程参数里面不能使用^这个dd
呵呵,但是并不是说不在type里面声明就不能在过程中使用
例如:
procedure Add(a:array of byte);我搜索了一下你的帖子,好象这是第一个!
你不要不给分我哦,55~~
type
pClass=^Class //到底作什么了??
type
pClass=^Class //到底作什么了??
你可以看看Obect pascal语言的说明type
PClass = ^Class//是声明一个类型
pClass=^Class //定义类指针变量在过程和函数的参数声明中,编译器不能识别“^”,必须使用定义过的变量类型(变量类型名称好像只能由字母组成),如pinteger、pchar或自定义变量类型,这里pClass就是自定义变量类型