Я ищу способ доступа к частным компонентам класса Fortran (производный тип в терминологии Fortran) из класса потомков. Например, предположим, что класс A имеет компонент x, объявленный как закрытый. Теперь рассмотрим второй класс B, который наследуется от базового класса A. В этом случае класс B не имеет прямого доступа к x, поэтому любая попытка доступа к B% x недопустима. Два решения, о которых я могу думать, следующие:
(1) Объявить x общедоступным. Это, однако, сделает x доступным по всему миру, что нарушает скрытие данных и, следовательно, оно отвергается как приемлемое решение проблемы.
(2) Внедрить процедуры получения/установки A% x, такие как A% getX() и A% setX(). Это не только громоздко, но также позволит (косвенный) доступ к A% x всюду в программе - не только в дочерних классах.
Я хочу, чтобы получить доступ к A% x из дочерних классов, но в противном случае x должен быть недоступен в другом месте. С++ имеет атрибут "protected" для этой цели, но насколько мне известно, "защищенный" атрибут в Fortran 2003 имеет другое значение (он делает A% x доступным везде и только защищает его значение, которое не может быть изменено вне класса).