嵌套类中的不可访问成员 - 为什么?

4
TTest= class
public abc:Integer;
type
  TTest2 = class
    procedure test;
  end;
end;

procedure TTest.TTest2.test();
begin
  abc:=5; //'Inaccessible here'
end;

我收到了“实例成员abc在此处不可访问”的错误信息。
情况比较严重,我必须使用一个线程,但是由于TThread是抽象的,所以自己的类应该继承它。在我的情况下,需要线程的类已经继承了另一个不能继承TThread的类...所以这是不可能的。 我的场景是嵌套类继承TThread,并在下面声明它。但是Execute();方法必须使用其父类的成员。
我该怎么做?为什么会出现这个错误?
1个回答

14

内部类就是一个独立的类。只有它的名称空间嵌套在父类中。您可以构造内部类的实例,而无需父类的实例。

如果将abc成员变量设为类变量,则可以从内部类访问它,因为类变量具有独立于对象实例的全局存储。

否则,您需要将父类的实例传递到嵌套类中,以便嵌套类可以写入父实例的字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接