Как разрешить двум классам использовать друг друга без необходимости в третьем классе? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть два класса. Они должны использовать друг друга. как это

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 голосов
/ 07 ноября 2018

Это на самом деле легко (если я не понял ваш вопрос). Просто используйте предварительное объявление для второго класса перед объявлением первого класса:

classB = class; // add this forward declaration

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

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