子孫クラスから Fortran クラス (Fortran の用語では派生型) のプライベート コンポーネントにアクセスする方法を探しています。たとえば、クラス A にプライベートとして宣言されたコンポーネント x があるとします。次に、基本クラス A から継承する 2 番目のクラス B を考えます。この場合、クラス B は x に直接アクセスできないため、B%x にアクセスしようとしても許可されません。私が考えることができる2つの解決策は次のとおりです。
(1) x を public として宣言します。ただし、これにより x がグローバルにアクセス可能になり、データの隠蔽が乱用されるため、問題の許容可能な解決策として拒否されます。
(2) A%getX() や A%setX() など、A%x を取得/設定するためのプロシージャを実装します。これは面倒なだけでなく、子クラスだけでなく、プログラム内のあらゆる場所で A%x への (間接的な) アクセスを許可します。
私が欲しいのは、A の子クラスから A%x にアクセスする方法ですが、それ以外の場合は x にアクセスできないはずです。C++ にはその目的のために「保護された」属性がありますが、私の知る限り、Fortran 2003 の「保護された」属性には別の意味があります (これにより、A%x はどこからでもアクセスできるようになり、その値のみが保護され、クラスの外では変更できなくなります)。 )。