Y yysun Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-27 #3 Object Pascal 没有友元函数,它默认同一个 unit 中的 class 之间互为友元。 这个与 Java 的方法很类似, Java 默认同一个 package 中的 class 之间互为友元。
Object Pascal 没有友元函数,它默认同一个 unit 中的 class 之间互为友元。 这个与 Java 的方法很类似, Java 默认同一个 package 中的 class 之间互为友元。
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2002-02-27 #5 unit Unit2; interface type //在同一单元声明的两个类 TA TB TA=class private F1:Integer; public property Value:Integer read F1; procedure IncValue; end; TB=class private Double; public property Valueouble read D; procedure IncAndMul(A:TA); end; implementation { TA } procedure TA.IncValue; begin Inc(F1); end; { TB } procedure TB.IncAndMul(A: TA); begin D:=(D+A.F1)*A.F1 //在TB中访问TA的私有变量 end; end. unit unit1; ... ... implementation uses Unit2; {$R *.DFM} var A:TA; B:TB; procedure TForm1.FormCreate(Sender: TObject); begin A:=TA.Create; B:=TB.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin A.Free; B.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin A.IncValue; B.IncAndMul(A); Caption:=Format('%d %f',[A.Value,B.Value]); end;
unit Unit2; interface type //在同一单元声明的两个类 TA TB TA=class private F1:Integer; public property Value:Integer read F1; procedure IncValue; end; TB=class private Double; public property Valueouble read D; procedure IncAndMul(A:TA); end; implementation { TA } procedure TA.IncValue; begin Inc(F1); end; { TB } procedure TB.IncAndMul(A: TA); begin D:=(D+A.F1)*A.F1 //在TB中访问TA的私有变量 end; end. unit unit1; ... ... implementation uses Unit2; {$R *.DFM} var A:TA; B:TB; procedure TForm1.FormCreate(Sender: TObject); begin A:=TA.Create; B:=TB.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin A.Free; B.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin A.IncValue; B.IncAndMul(A); Caption:=Format('%d %f',[A.Value,B.Value]); end;
C chy578 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-03 #11 是的这不是友元函数,但是这种在一个类中访问另一个类的方法很好。。