Страница 1 из 1
Объявить самоссылочное поле
Добавлено: 02 авг 2007, 18:40
Фоб
Забыл, как объявить то, что не выходит объявить так:
Tc = record
a: integer;
m: array of Tc;
end;
Re: Объявить самоссылочное поле
Добавлено: 03 авг 2007, 08:15
LAngel
[syntax="delphi"]type
PC = ^TC;
TC = record
a: integer;
m: array of PC;
end;[/syntax]
Re: Объявить самоссылочное поле
Добавлено: 03 авг 2007, 14:47
Фоб
Спасибо, это то, что нужно!
Re: Объявить самоссылочное поле
Добавлено: 07 авг 2007, 19:37
Фоб
Продолжение вопроса.
Объявил вот это:
Код: Выделить всё
type PC = ^TC;
TC = record
a: integer;
m: array of PC;
end;
Кроме того, есть рекурсивная функция
countThis(aTc: Tc): real;
Она вызывает себя, передавая в качестве аргумента элементы массива m.
Однако, при компиляции возникает ошибка: Incompartible types: 'Tc' and 'Pc'
Как бы заставить функцию принимать оба типа аргументов? Ведь в сущности, они одно и то же.
Пока есть идея (громоздкая) создать дополнительную функцию, чтоб переводила Pc в Tc, но наверняка есть более простой способ. Может, кто-то знает?
Re: Объявить самоссылочное поле
Добавлено: 08 авг 2007, 08:12
LAngel
это не одно и то же.
PC - это ссылка на TC
приведение:
Код: Выделить всё
var
a: TC;
b: PC;
begin
a := b^;
b := @a;
end;
впринципе... пожно объявить перезагруженные функции для эмуляции:
Код: Выделить всё
function countThis(aTc: TC): real; overload;
begin
... текст функции
end;
function countThis(aTc: PC): readl overload;
begin
result := countThis(aTc^);
end;

Re: Объявить самоссылочное поле
Добавлено: 08 авг 2007, 12:52
Фоб
Ура! Вы меня снова выручили!
