如何允许两个类在不需要第三类的情况下互相使用?

时间:2018-11-07 08:16:27

标签: class pascal

我有两节课。他们应该互相使用。 像这样

classA = class
 // sth
 function change(a:classB):classB;
end;
classB = class
 // sth
 function change(a:classA):classA;
end;


function classA.change(a:classB):classB;
begin
 exit(a);//change the focus
end;
function classB.change(a:classA):classA;
begin
 exit(a);//change the focus
end;

但这是错误的。我不想使用第三个,因为我可能会使用"classC"甚至更多。

该函数必须是类的方法。请不要将其淘汰。

1 个答案:

答案 0 :(得分:1)

这实际上很容易(除非我误解了您的问题)。只需在第一个类的声明之前为第二个类使用forward declaration

classB = class; // add this forward declaration

classA = class
  // sth
  function change(a: classB): classB;
end;

classB = class
  // sth
  function change(a: classA): classA;
end;