На ум приходят два варианта. Во-первых, необходимо создать элемент-источник с d-спецификациями для атрибутов dog и вместо использования favs (dog) иметь / copy после каждой структуры данных, которая будет использовать это определение подполя. На мой взгляд, это может привести к некоторому небрежному коду и затруднить анализ в будущем. С другой стороны, если вы используете одну и ту же структуру данных в нескольких программах, есть преимущества.
Второй вариант, который приходит на ум, - использовать ключевое слово Based () в структуре данных dog, а затем определять поле указателя. Поле указателя будет занимать некоторую память, но структура данных dog не будет занимать какую-либо память, пока ваша программа не выделит ее. Ключевое слово Based () не переносится в другие структуры данных, определенные для него с помощью LikeDS (). Таким образом, у вас есть структура данных, определенная в исходной программе. Вам не нужно выделять для этого память, и вам не нужно устанавливать указатель на какое-либо значение. По умолчанию это Null. Просто будьте осторожны, чтобы не получить доступ к структуре данных dog в вашем коде. Вы получите ошибку указателя, которая выглядит так же, как если бы ваша программа была вызвана без обязательного параметра.