【问题标题】:How to declare cross referenced class types?如何声明交叉引用的类类型?
【发布时间】:2012-10-13 05:03:50
【问题描述】:

我尝试在 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'

如何构造这些类类型?

【问题讨论】:

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


    【解决方案1】:

    你应该使用TTableSpec的前向声明:

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

    【讨论】:

    • ...和前向声明需要在同一个“类型”声明中声明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多