Fdm1dMesherのインスタンスは、方程式が定義されている1次元領域を、離散化して保持します。(訳注:マルチファクターモデルであれば、Fdm1dMesherインスタンスをファクター数だけ用意する必要がある)。dminus_;};このベースクラスは、いくつかのインスペクター関数以外は、何の動作も行いません。いう点の集合が格納されます。これらの値の事前計算は、派生クラスのコンストラクターが行うので、protectedとして宣言されています。して、(他のオブジェクトと)共有される事を想定して生成されています。このクラスはpolymorphicではありません。このクラスのどのインターフェースも仮想関数ではありません。(注:このクラスは、仮想デストラクターさえ持っていません。その為、ベースクラスへのポインターが消去された場合、予想外の動作が起こる可能性があります。その場合でも、shared_ptrのコンストラクターのおかげで、大丈夫です。shared_ptrは、与えられたポインターの型に応じて、正しい消去機能を備えているからです。実際の所、このインスタンスをポインターとして(他のオブジェクトに)渡す必然性は、おそらく勝手なコピーを避ける為以外には、無いように思えます。後から見れば、Fdm1dMesherクラスは、継承を伴わないクラスとして作ることが出来たかもしれません。その場合は、派生クラスの役割を、Fdm1dMesherインスタンスを生成したり返したりする関数群で置き換えればいいでしょう。コンストラクターは、いくつかの事前計算を行っています。(訳注:対象資産価格が取り得る最大値と最小値。オプション価格の境界条件では無い)。その境界値は、この価格エンジンだけで使われるのではなく、対象資産が、同じ確率過程を取る、他のオプションでも使う事を意図して作られています。されていたもの)を調整できるようにしています。対数を離散化しています。境界値を計算した後、コンストラクターは、実際の価格グリッドの構築作業を、Fdm1dMesherクラスから派生した2つの汎用的なユーティリティークラスに委託しています。そこで計算されたデータをメンバー変数にコピーします。Fdm1dMesherクラス内で関数を実装して動作を完結させたいのなら、その関数群は、構築された価格グリッド(価格のメッシュ)を返すようにすればいいでしょう。その2つのユーティリティークラスの内、シンプルな方は、Uniform1dMesherクラスと名付けられており、その名前が示す通りの動作を行います。引数で取ったグリッドポイント数を基に、2つの境界点の間に等間隔のグリッドを構築します。points(グリッド生成上、重要なポイント)のまわりにグリッドポイントが集中するように構築します。FdmBlackScholesMesherのコンストラクターでは、引数として指定されていません。QuantLibのコードを確認しましたが、コンストラクターは、そのような引数を取っておらず、1と2の引数がNullでないかどうかで判断しています。著者の勘違いかと思います)。下の図は、このコンストラクターを使った場合に、どのようなメッシュが構築されるかを示しています。pointとした集中メッシュ、になります。すべてのメッシュについて、ポイント数は同じです。