1

我在 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;

我得到错误:标识符标识没有成员“someVariableForAdmin”

当我更改 var Person: TAdmin 时,一切正常。请帮忙,非常感谢。

4

1 回答 1

1

这正是应该预期的。TGroup实例不知道从它派生的类型,也不知道这些派生对象可能声明的任何字段或方法。如果您想访问包含在TAdmin其中的某些内容及其后代,则需要创建其后代的实例TAdmin或其中一个。

如果要访问 a 中的某些内容TAdmin,则必须首先创建 a TAdmin

var
  Person: TGroup;

begin
  Person := TAdmin.Create;
  (Person as TAdmin).someVariableForAdmin := 1;
end.

从您的问题中不清楚您到底想要完成什么。您可能想发布另一个问题来解释您想要的目标,发布一些基本代码,并寻求帮助以更改它以实现该目标。(为此编辑此问题为时已晚,因为在您收到多个答案后,这会改变问题的整个含义。)

于 2013-06-26T23:38:12.800 回答