type
  TA = class
    b: TB;
  end;  TB = class
    a: TA;
  end;
  
  TC = class
    b: TB;
  end; ============================================
提示 Undeclared identifier:'TB'
我试着分别放入两单元中,但那样就带来另个问题,提示'Circular uses',因为类定义是放在interface和 implemention 之间的。
是不是要新建一个类来解耦啊?

解决方案 »

  1.   

    TB=class
    end;TA = class
        b: TB;
      end;TB = class
        a: TA;
    end;
      

  2.   

    你在引用单元时出错了...
    你在TB的单元中引用TA单元
    在TC的单元中引用TB的单元
      

  3.   

    type
      TB=class;  TA = class
        b: TB;
      procedure aaa;
      end;  TB = class
        a: TA;
      procedure bbb;
      end;  TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        aa:TA;
        bb:TB;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TA }procedure TA.aaa;
    begin
      showmessage('aaa')
    end;{ TB }procedure TB.bbb;
    begin
      showmessage('bbb')
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      aa.aaa;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      bb.bbb;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      bb.a.aaa;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
       aa:=TA.Create;
       bb:=Tb.Create;
    end;