嵌套类中无法访问的成员 - 为什么?

时间:2011-02-22 22:26:41

标签: delphi oop delphi-2009

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 个答案:

答案 0 :(得分:14)

内部类恰恰是:一个单独的类。只有它的名称范围嵌套在父类中。您可以在没有父类实例的情况下构造内部类的实例。

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

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