А предварительное описание классов со времен сборки 3.0.0.1110 менялось? А то я пытаюсь в одном из классов вызвать конструктор другого, предварительно описанного, а мне говорят что ни один конструктор не найден. Сейчас обновиться не смогу, только когда в Москву вернусь. Но суть в том что пытаюсь создать древовидную структуру и нужна циклическая зависимость классов, интеллисенс поля класса видит, а скомпилировать все это не получается.
Нет не поменялось. Возвращайтесь и приводите код.
Попробую не возвращаясь минимальный воспроизводимый с телефона написать.
program recursiveReferenceTest;
type anotherClass = class
end;
otherClass=class;
someClass = class
otherRef:otherClass;
constructor create(another: anotherClass);
begin
self.otherRef:=new otherClass(another);//на эту строку ругается
end;
end;
otherClass = class
someRef:someClass;
constructor create(another: anotherClass);
begin
self.someRef:= new someClass(another);
end;
end;
begin
end.
Вроде все, на этом проверил - воспроизводится. Извините за отсутствие форматирования - печатал вручную, а с телефона очень неудобно пользоваться форумом. Спасибо.
А, ну - понятно. Можно пользоваться только именем предописанного класса, но не какими-то его специфическими функциями. Вынесите описание всех методов за тело класса - и всё получится
А сам конструктор тоже так вынести можно? Или это будет просто метод, возвращающий экземпляр класса, внутри которого используется пустой конструктор? Не слишком ли это костыль?
type anotherClass = class
end;
otherClass=class;
someClass = class
otherRef:otherClass;
constructor create(another: anotherClass);
end;
otherClass = class
someRef:someClass;
constructor create(another: anotherClass);
begin
self.someRef:= new someClass(another);
end;
end;
constructor someClass.create(another: anotherClass);
begin
self.otherRef:=new otherClass(another);
end;
begin
end.
Пишите, пожалуйста, с отступами.
Спасибо большое за код, сегодня продолжу значит заниматься своим проектом. По поводу отступов - еще раз извиняюсь за неотформатированный код - но это был не copy-paste из IDE, а набор вручную с телефона. Интерфейс ввода нового сообщения на маленьком экране кстати - вырвиглазный. Была бы тут такая же кнопка форматирования кода (это не просьба ее добавить, если что), как в среде, я бы его отформатировал. А вручную очень неудобно, все равно бы некрасиво получилось.