【问题标题】:Inaccessible members in nested class - WHY?嵌套类中无法访问的成员 - 为什么?
【发布时间】:2011-02-22 22:26:41
【问题描述】:
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();方法必须使用其父类的成员。

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

【问题讨论】:

    标签: delphi oop delphi-2009


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2013-11-13
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      相关资源
      最近更新 更多