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();方法必须使用其父类的成员。
我该怎么办?为什么会出现这个错误?
答案 0 :(得分:14)
内部类恰恰是:一个单独的类。只有它的名称范围嵌套在父类中。您可以在没有父类实例的情况下构造内部类的实例。
如果将abc成员设为类变量,则可以从内部类访问它,因为类变量具有独立于对象实例的全局存储。
否则,您需要将父类的实例传递给嵌套类,以便嵌套类写入父实例的字段。