实现接口的问题(100分)

  • 主题发起人 主题发起人 大花鸡
  • 开始时间 开始时间

大花鸡

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义一个接口
type
IMyInterface = interface
procedure AA;
end;
实现类:
TTest = class(TObject, IMyInterface)
public
constructor create;
destructor destroy;
procedure AA;
end;

可是编译不了,报错
“[Error] Unit1.pas(19): Undeclared identifier: 'QueryInterface'”
“[Error] Unit1.pas(19): Undeclared identifier: '_AddRef'”
“[Error] Unit1.pas(19): Undeclared identifier: '_Release'”
这是为什么?TObject不能直接与接口联接吗?
 
ImyInterface = interface 直接从INTERFACE承继需要实现它的三个标准接口,DELPHI已经有这个类帮你完成了, 所以
实现类改为:
TTest = class(TInterfacedObject, IMyInterface)
// 即可以编译通过

system.pas
TInterfacedObject = class(TObject, IInterface)
protected
FRefCount: Integer;
function QueryInterface(const IID: TGUID
out Obj): HResult
stdcall;
function _AddRef: Integer
stdcall;
function _Release: Integer
stdcall;
public
procedure AfterConstruction
override;
procedure BeforeDestruction
override;
class function NewInstance: TObject
override;
property RefCount: Integer read FRefCount;
end;
 
接受答案了.
 
后退
顶部