Я пишу довольно маленькое приложение для решения pde на Фортране и пытаюсь использовать ООП. Теперь у меня есть несколько модулей, некоторые из них определяют типы с соответствующими внутренними процедурами.
Теперь проблема в том, что мне делать, если один модуль работает с типом, определенным в другом модуле и , более поздняя модель также работает с типом первого? Я приведу пример.
Скажем, у меня есть два модуля: один определяет тип Mesh , другой - тип NodeVariable . Теперь я хочу, чтобы каждый NodeVariable был связан с сеткой, с которой он будет решаться, поэтому я добавляю поле type(Mesh) :: mesh
в определении типа. Пока нет проблем, я могу написать use module-mesh
, чтобы получить доступ к определению типа mesh . Но я также хочу, чтобы меш знал о переменных, определенных в нем, поэтому я объявляю type(NodeVariable), allocatable :: var(:)
как поле и добавляю процедуру для добавления переменных в меш на лету. Но теперь я застрял, потому что я не могу позволить себе еще один оператор use : он заставляет модуль использовать сам по себе, и поэтому все вылетает. Решение