Pascal 中的抽象函数
Abstract function in Pascal
我一直在研究 AVL 树单元,用户可以在其中指定他想要在树中包含的内容。为此,我正在使用对象。在我的单元中,我定义了名为 Node 的父对象,指向该对象的指针是 PTNode。在这个对象中,我有 3 个属性,它们是 Balance:integer;Left,Right:PTNode 用于节点的儿子,和 1 method:Function Is_Greater(Node1:PTNode):integer 是虚拟和抽象的.并且由用户来定义这个函数(我不知道它是 char 还是 integer 等)。
我在尝试测试这个装置时遇到了一个问题。我创建了名为 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 时,它会提示我的函数与其父函数不匹配。我不知道如何解决这个问题。
您需要输入参数 Node1
:
if X>PTObject(Node1)^.X then Is_Greater:=1
else if X<PTObject(Node1)^.X then Is_Greater:=-1
else Is_Greater:=0;
我一直在研究 AVL 树单元,用户可以在其中指定他想要在树中包含的内容。为此,我正在使用对象。在我的单元中,我定义了名为 Node 的父对象,指向该对象的指针是 PTNode。在这个对象中,我有 3 个属性,它们是 Balance:integer;Left,Right:PTNode 用于节点的儿子,和 1 method:Function Is_Greater(Node1:PTNode):integer 是虚拟和抽象的.并且由用户来定义这个函数(我不知道它是 char 还是 integer 等)。
我在尝试测试这个装置时遇到了一个问题。我创建了名为 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 时,它会提示我的函数与其父函数不匹配。我不知道如何解决这个问题。
您需要输入参数 Node1
:
if X>PTObject(Node1)^.X then Is_Greater:=1
else if X<PTObject(Node1)^.X then Is_Greater:=-1
else Is_Greater:=0;