定义这个接口实现类,错误在那里呢?
下面是我写得一个delphi下使用接口的测试.
开始一切正常,为了资源释放问题,我在 TMyTest 中增加了 _Release 方法,用以替掉原来的(因为它在引用为0时会释放对象),这样我可以在程序中显示的调用 .free释放. 但就是这个增加动作,导致无法编译。
提示那信息如下:
[Error] interfaceunit1.pas(20): Unsatisfied forward or external declaration: 'TMyTest._Release'
[Fatal Error] interfacetest.dpr(5): Could not compile used unit 'interfaceunit1.pas'
这位可以帮忙分析一下。thanks.
unit interfaceunit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
IGetName = interface
function GetClassName :string;
end;
TMyTest = class(TInterfacedobject,IGetName)
private
classname :string;
protected
public
function GetClassName :string ; virtual;
function _Release : Integer; stdcall;
end;
TForm1 = class(TForm,IGetName)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetClassName :string ; virtual;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TMyTest.GetClassName :string ;
begin
Result :='TMyTest2';
end;
function TMyTest_Release:integer;
begin
Result := -1;
end;
function TForm1.GetClassName :string ;
begin
Result :='Foxxxxxrm2sfsdf';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : IGetName;
j :TMyTest;
begin
j :=TMyTest.Create;
i := j;
Label1.Caption :=i.GetClassName;
i :=nil ;
// j.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : IGetName;
begin
i := self;
Label1.Caption :=i.GetClassName;
end;
end.