我一直在研究AVL树单元,用户可以在其中指定他想要的内部树。我为此使用对象。在我的单元中,我定义了名为Node的父对象,并且指向此对象的指针是PTNode。在这个对象中,我有3个属性:Balance:integer; Left,Right:节点的子节点的PTNode,以及1个方法:Function Is_Greater(Node1:PTNode):虚拟和抽象的整数。这是留给用户来定义这个函数(我不知道它会是字符或整数等)。Pascal对象中的抽象方法
我试图测试这个单元,我遇到了一个问题。我创建了我的对象的子对象节点名为Object1 = Object(Node)并添加了一个属性X:integer,我想定义函数Is_Greater。这里是代码的声明,部分:在此之后
单位
Unit Tree;
interface
type PTNode=^Node;
Node=object
Left,Right:PTNode;
Balance:integer;
Function Is_Greater(Node1:PTNode):integer; virtual; abstract;
end;
我定义我在我单位的功能不属于我的问题有关。
这是我的测试程序:
Program Test;
uses Tree;
Type PTObject=^Object1;
Object1=object(Node)
X:integer;
Function Is_Greater(Node1:PTNode):integer; virtual;
end;
Function Object1.Is_Greater(Node1:PTNode):integer;
begin
if X>Node1^.X then Is_Greater:=1
else if X<Node1^.X then Is_Greater:=-1
else Is_Greater:=0;
end;
,这让我错误说是X不是目标节点的一部分。但是,当我尝试设置Node1:PTObject时,它给了我错误,我的功能不匹配其父。我不知道如何解决这个问题。
[Pascal的摘要函数]的可能重复(http://stackoverflow.com/questions/32416605/abstract-function-in-pascal) – gnat