我经常得到:我在另一个单元中定义的接口类型的未声明标识符。 这就是我所拥有的:
unit Drawers;
interface
implementation
type
IDrawer = interface
['{070B4742-89C6-4A69-80E2-9441F170F876}']
procedure Draw();
end;
end.
unit Field;
interface
uses
Graphics, Classes, Drawers;
TField = class(TInterfacedObject, IField)
private
FSymbolDrawer: IDrawer;
在FSymbolDrawer中,我得到编译器错误。
当然我有抽屉用途;在定义TField的单元中。
这是关于什么的?
谢谢
答案 0 :(得分:6)
在单位Drawers
中,IDrawer
的类型声明必须位于单位的界面部分。您已将其插入到实现部分中,它仅对单元内声明可见。
以下是代码:
unit Drawers;
interface
type
IDrawer = interface
['{070B4742-89C6-4A69-80E2-9441F170F876}']
procedure Draw();
end;
implementation
end.
答案 1 :(得分:1)
您将Drawers
添加到哪个使用条款?它必须在interface
uses子句中(在使用它的TField
定义之上)。