我在Pascal做了一个小项目,我遇到了问题。
我有3个班级(1个父母2个孩子)
TGroup = class
...
end;
TUser = class(TGroup)
...
public
someVariableForUser: Integer;
...
end;
TAdmin = class(TGroup)
...
public
someVariableForAdmin: Integer;
...
end;
//And main program like this:
var
Person: TGroup;
begin
Person := TGroup.Create();
Person.someVariableForAdmin := 1;
我得到错误:标识符idents没有成员“someVariableForAdmin”
当我更改var Person:TAdmin时,一切正常。 请帮忙,非常感谢。
答案 0 :(得分:1)
这正是应该期待的。 TGroup
实例不知道从中下降的类型,或者后代可能声明的任何字段或方法。如果您想访问TAdmin
及其后代中包含的内容,则需要创建TAdmin
或其中一个后代的实例。
如果您想访问TAdmin
中的内容,则必须首先创建TAdmin
:
var
Person: TGroup;
begin
Person := TAdmin.Create;
(Person as TAdmin).someVariableForAdmin := 1;
end.
从你的问题中不清楚你到底想要完成什么。您可能希望发布另一个问题来解释您的目标,发布一些基本代码,并在更改它以达到该目标时寻求帮助。 (为此编辑此内容为时已晚,因为在您收到多个答案后,这会改变问题的全部含义。)