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

JBA*_*JBA 4 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;
Run Code Online (Sandbox Code Playgroud)

我得到'实例成员abc在这里无法访问'.

情况很严重.我必须使用一个线程,但由于TThread是抽象的,所以自己的类应该继承它.在我的情况下,需要该线程的类已经继承了另一个不能继承TThread的类...所以这是不可能的.我的场景是继承TThread的嵌套类,下面我声明它.但是Execute(); 方法必须使用其父类的成员.

我该怎么做?为什么这个错误?

dth*_*rpe 14

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

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

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