2017-01-07 4 views
1

Fortranで特定の派生型の組み込み代入演算子を無効にすることはできますか?基本的に私は、次のコンパイル時にエラーしたいと思います:特定の派生型の組み込み割り当てを無効にすることはできますか?

type(MyType) :: a, b 
a = b 

私はすでにタイプ結合代入演算子を宣言し、それが民間作ってみたが、これは単に代わりに呼び出されている固有の代入演算子になり。もちろん、これを実行時エラーにするためにプログラムを停止する代入演算子を宣言することもできますが、これはコンパイル時にすでに失敗している場合には本当に好きです。

どうすればよいですか?

+1

私は1つがあるとは思いません。 –

答えて

2

割り当て(および一部のオブジェクトの値をコピーする機能は、割り当てと微妙に異なるものです)全体を抑制することはできません。

(その後、固有の割り当てが無効になっている、あなたがタイプバインド定義された割り当てを提供する場合Fortranでその割り当てが。真性または定義されたいずれかであることに注意してください。質問が本当に割り当ての両方の品種を無効にする方法を求めている。)

しかし。 ..型名にアクセスできない場合、その型のアクセス可能な変数が(標準の制約の観点から)定義不可能である(つまりPROTECTEDである)ことがわかっている場合、コンパイルなしで代入を使用することはできません何らかのエラー。これが有用かどうかは状況によって異なります。

何らかの理由で割り当てを抑止する必要があるプロパティのタイプは、タイプ名をプライベートにしてプライベートポインタコンポーネントとしてラップオブジェクトを別の場所にラップすることで、エンドユーザーから隠された状態(状況によって異なります)パブリックなラッパー派生型。ユーザーは自分のハート・コンテンツにラッパー・タイプを割り当てることができますが、実際には参照をコピーするだけです。

(Fortranの言語は、オペレータが後で混乱によく着用のパスであるとして割り当てを考慮すると、代入演算子の概念がありません。)

関連する問題