如何声明交叉引用的类类型?

时间:2012-10-13 05:03:50

标签: delphi oop delphi-7 delphi-xe2 delphi-2010

我试图在Delphi中构建一个类系统。类TFieldSpecTTableSpec通过对象属性相互引用。

type
  TFieldSpec=class(Tobject)
  private
    FTableSpec : TTableSpec;
  public
    property TableSpec : TTableSpec read FTableSpec;
  end;

  TTableSpec=class(Tobject)
  private
    FFields : array[1..100] of TFieldSpec;
  end;

当我编译它时,我收到此错误:

[Error] Objects.pas(66): Undeclared identifier: 'TTableSpec'

如何构建这些类类型?

1 个答案:

答案 0 :(得分:10)

您应该使用TTableSpec的正向声明:

type
  TTableSpec = class;

  TFieldSpec=class(Tobject)
  private
    ..
    FTableSpec : TTableSpec;
    ..
  end;

  TTableSpec=class(Tobject)
  private
    FName : string;
    ..
  end;