说我有两个文件,characters.pas
和ogre.pas
。食人魔是一个角色,但为了干净起见,我试图将两个文件分开。在characters.pas
中,我有
unit Characters;
{$mode objfpc}{$H+}
interface
type
TCharacter = class(TOBject)
private
// ...
public
// ...
published
// ...
end;
implementation
// Method bodies
end.
在
ogre.pas
中,我有unit Ogre;
{$mode objfpc}{$H+}
interface
type
TOgre = class(TCharacter)
public
constructor create; override;
end;
implementation
constructor TOgre.create();
begin
// Banana banana banana
end;
end.
在任何一个.pas文件中的任何位置添加
uses
块都会引发错误,这使我相信依赖于继承的所有类都必须与其父类位于同一文件中。我想念什么吗? 最佳答案
是的,您错过了一些东西:use
部分。您必须声明unit Ogre
使用unit Characters
:
食人魔单位;
{$mode objfpc}{$H+}
interface
uses
Characters;
type
TOgre = class(TCharacter)
public
constructor create; override;
end;
implementation
constructor TOgre.create();
begin
// Banana banana banana
end;
end.
阅读更多:
unit example @FPC
the use of a second form @FPC wiki
还要注意,如果希望某些字段从
TCharacter
到TOgre
可见,但仍不能从主程序访问,则必须将其可见性设置为protected