PayOff は抽象基本クラスで、CallPayOff と PutPayOff はそこから派生します。呼び出し演算子は基本クラスで純粋仮想関数として定義され、CallPayOff と PutPayoff は独自の実装を提供します。
vector<PayOff*> v;
v.push_back(new CallPayOff(20));
v.push_back(new PutPayOff(20));
vector<double> payVals;
payVals.reserve(v.size());
transform(v.begin(), v.end(), back_inserter(payVals), bind2nd(mem_fun(&PayOff::operator()),this));
呼び出し演算子は次のように定義されます。
class PayOff
{
public:
virtual double operator()(double spot)const = 0;
virtual ~PayOff(){}
};
どなたか見ていただけませんか?Boost/C++11 はオプションではありません。