0

私は、いくつかのデータ (X と呼びましょう) を生成/インポートして他のデータ セット (Y と呼ぶことができます) を生成する科学的なコードを書いています。問題は、X を生成する方法が複数あり、この生成方法が Y の計算式に影響を与えることです。

データのインポートと計算を処理するライブラリを開発しましたが、ユーザーの介入なしに式を変更するための適切なメカニズムを決定できません。

そのような場合を処理する最善の方法は何ですか? X の生成方法ごとに異なる関数を実装しましたが、Y の計算方法は 1 つです。

さらに明確にするために、次の動作を実装したいと思います。

  1. ユーザーが X を生成/インポートするインポート関数の 1 つを呼び出し、
    • 魔法が起こり、Y を計算する式が何らかの形で更新されます。
  2. 次に、Y を生成する calc() 関数を呼び出します。

この質問で言及されているすべての関数は、具体的で単純なクラス内関数です。

Xを生成/インポートして魔法を機能させる関数内にトリガーメカニズムを実装する方法がわかりません。製剤を保存する方法は、有益なフェロー @UnknownGosu および @Dima-Rudnik によって回答されています。

前もって感謝します。

4

1 に答える 1

1

戦略パターンのフォームが必要です。

@UnknownGosuが指摘したように。次のような抽象Formulaインターフェイスを定義します。

class Formula
{
public:
  virtual double calc(double) = 0;
};

コンクリートを作るよりFormula

class QuardicFormula : public Formula
{
public:
  double calc (double x) {return x*x;}
};

編集:

手続き型プログラミングでは、同じことが関数ポインタで実現されます。たとえば、並べ替え関数へのポインターを受け取る QuickSort の実装です。

于 2012-09-16T19:12:56.613 に答える