私は物理学の分析コードを書いています。最初は自分のために使いました。私たちの誰もC + +の達人です。私は、分析要件に応じて容易に入れ替え可能な一連のツールによって作用されるオブジェクトに「物理現象」データを抽象化する小さなフレームワークをまとめました。友情は継承されない - 代替案は何ですか?
これは、イベントオブジェクトを操作し、ベース "ツール"の派生物を使用して結果を生成する "物理解析"コードの2つのコードを作成しました。入力ファイルを添付し、ジョブを並列実行に分割し、スクリプトをいくつかのスクリプトにしたがってチェーンにリンクする「構造的な」コード。
問題はこれです。他の人がコードを使用することが不可欠ですどのユーザーも、イベントデータを変更するたびに1つの手順を実行する必要があります。難しい構造コードの(多くの)余分な行は、物理的に明らかで明らかにそうでない限り、難しいかもしれません。悪いことに、それをあまりにも詳細に見ると人々にアイデアが与えられるかもしれません。そして、むしろ理にかなった理由で構造コードを編集したくないのです。そして最も重要なのは、物理学に影響するものを導入してはいけません。
私のことができるようにしたいと思います:
- A) 構造のコードがどのような方法
- Bに イベントデータを編集していないことは明らかな方法で証明)他のユーザーたらこれを強制 は、コードそのものを拡張し始める (私たちのどれもが 専門家ではない、と物理学は常に 最初に来る - 翻訳:ない がダウンボルトで固定何が厄介な ハックのための公正なゲームである)
私の理想的なシナリオでは、イベントデータはプライベートで、派生した物理ツールはツールの基本クラスからのアクセスを継承しています。もちろん、これは許されていません。これには理由があると聞いていますが、それは問題ではありません。
残念ながら、ベース(友人である)からgetters/settersを呼び出す方法は、解決するよりも多くの問題を引き起こします。コードはきれいで、従うのが簡単で、ツール自体を実装する際にできるだけ物理的なものを使用する必要があります(ユーザーは、ツールを作成するためにC++またはプログラムの内部動作のエキスパートである必要はありません)。
私は信頼できるベースクラスを持ち、どの派生物も厳重な調査の対象となりますが、他の迂回路はありますか?または、他のベースの派生品へのアクセスを拒否する方法はありますか?
私は理想的には上記の二つの理由(AとB)のためにのみ、これらのツールへのイベントの内容へのアクセスを制限するだろう
class Event
{
// The event data (particle collections etc)
};
class Tool
{
public:
virtual bool apply(Event* ev) = 0;
};
class ExampleTool : public Tool
{
public:
bool apply(Event* ev)
{
// do something like loop over the electron collection
// and throw away those will low energy
}
};
のようなものを持っている状況を明確にします。
解決策がありがとうございました。私が思ったように、私が望んでいた完璧な解決策は不可能です。dribeasの解決策は他の設定では完璧ですが、apply()関数では、基本的にすべての日の書き込み/編集apply()関数を使用するため、コードをできるだけ明確かつ簡潔にする必要があります。他の人が書いたすべての行を理解する必要があります。読みやすさと労力の点ではそれほど能力ではありません。私は "役に立たない"からのプリプロセッサソリューションが好きです。それは本当に分離を強制するわけではありませんが、誰かがそれを壊すために真に悪意を持っている必要があります。図書館を提案してくれた人には、これは間違いなく最初のステップになると思いますが、2つの主な問題にはまだ取り組んでいません(とにかくソースを提供する必要があるため)。
ソースで作業する必要がある人やソースを見る人がC++のエキスパートでない場合は、C++を使用しないでください。 C++は、専門家ではない人にとっては厄介な言葉であり、特にOO技術が多用されている場合は、専門家になることはまずありません。 – DarenW
これはよく知られているように聞こえる...イベントデータの所有者または所有者これらのユーザーツールは、イベントデータを変更するか、それを使用して新しいイベントデータを生成することになっていますか? – juanchopanza
@DarenW、私はOPがここに選択肢がないと強く疑う... – juanchopanza