unit A
interface
uses B
type AClass=class
protected
iBClass:BClass;//此处引用B类
end;-------
unit B
interface
uses A
type BClass=class
protected
iAClass:AClass;//此处引用A类
end;编译的时候总是出错,怎么解决?都说implementation后面,但是implementation后面的type AClass=class就不好定义了呀。
interface
uses B
type AClass=class
protected
iBClass:BClass;//此处引用B类
end;-------
unit B
interface
uses A
type BClass=class
protected
iAClass:AClass;//此处引用A类
end;编译的时候总是出错,怎么解决?都说implementation后面,但是implementation后面的type AClass=class就不好定义了呀。
这个类从CLASSA CLASSB中继承
type AClass=class你可以专门用个unit放记录类型
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;Type
TAClass = class; TBClass = class
A1:TAClass;
function F2:String ;
public
constructor Create();
destructor Destroy; override;
end; TAClass=class
B1:TBClass;
function F2:String ;
public
constructor Create();
destructor Destroy; override;
end; TForm1 = class(TForm)
private
public
end;var
Form1: TForm1;implementation
constructor TAClass.Create();
begin
inherited Create;
//
end;
destructor TAClass.Destroy;
begin
//
inherited Destroy;
end;
function TAClass.F2:String;
begin
result := B1.F2 + 'TAClass';
end;
constructor TBClass.Create();
begin
inherited Create;
//
end;
destructor TBClass.Destroy;
begin
//
inherited Destroy;
end;
function TBClass.F2:String;
begin
result := A1.F2 + 'TBClass';
end;
{$R *.dfm}end.你自己看看
用第三个类。
这个类从CLASSA CLASSB中继承!!DELPHI不支持多个父类的继承
DELPHI早考虑过这个问题了。
楼上正解。
unit A
interface
uses B
type AClass=class
protected
iBClass:BClass;//此处引用B类
end;-------
unit B
interfacetype BClass=class
protected
iAClass:TObject;//此处引用A类
end;在B的Impl部分添加uses A,
在编码的时候,使用
AClass(iAClass)即可。
B说:A,你是我的儿子.
路人C:你们都有病!
A说:B,你是我的儿子.
B说:A,你是我的儿子.
路人C:你们都有病!
这个比喻不恰当
BClass说:AClass,你是我的儿子.
Class:有病怎么的?任何直接互相引用,肯定是思路错乱,尽管也有实现某个特定目的的可能,但绝对可以通过另外的方法实现,此等方法比goto病状更重.
比如
TCustomGrid = class(TCustomControl)
private
FHitTest: TPoint;
FInplaceEdit: TInplaceEdit;
TInplaceEdit = class(TCustomMaskEdit)
private
FGrid: TCustomGrid;
事实说明一切
但交叉引用在逻辑上肯定是有问题的。goto只是有可能造成结构问题。
楼主注意了,这个问题不是delphi的。是Pascal语法不支持,我想应该是语言的编译器不支持吧:)
请参考《Pascal 语言精要》