Engineとの間の連携が始まります。Engineそのものが存在しているかどうかチェックし、もしそうでないなら計算をそこでストップします。Engineに対し、データのリセットを指令します。)メソッドを使って、そのInstrument固有のresults構造体に伝達され、その構造体の中の古いデータを消去し、新しい計算結果を保持できる状態にします。Methodパターンが登場します。Engineは、その構造体のポインターを返します。Methodパターンにおける可変部分の役割を果たします。このメソッドは、まず渡された引数(arguments構造体)がその商品に適合するものかどうかチェックし、もしそうなら、そのarguments構造体に、自分のメンバー変数を代入していきます。)メソッドを使って行います。Patternの用意ができました。)メソッドを使って実行するよう要求されます。Engineは、argumentsから受け取った入力データを使って計算を実行し、計算結果をresults構造体へ書き込みます。Methodパターンが引き続き読み解かれます。Engineに対しresults構造体を渡すよう要求し、そのオブジェクトがDowncastされ、そのメンバー変数へのアクセスを可能にし、その内容を自らのメンバー変数にコピーします。Instrumentベースクラスは、すべての商品に共通のresults構造体をデフォールトで定義しており、各派生クラスで、さらに追加の計算結果を保有するよう拡張できます。)メソッドが、純粋仮想関数として宣言されず、例外処理を行うよう実装されているのを、不思議に思われるかもしれません。)をOverrideして実装するだけの場合は、意味のないメソッドをその派生クラスの為に実装するのを強制しないようにするためです。<ライセンス表示>QuantLibのソースコードを使う場合は、ライセンス表示とDisclaimerの表示が義務付けられているので、添付します。