#include typedef long TDate; class CurveObject { public: CurveObject(TDate baseDate, std::vector dates, std::vector rates, double basis, long dayCountConv) { _ptr = JpmcdsMakeTCurve(baseDate, dates.data(), rates.data(), dates.size(), basis, dayCountConv); } CurveObject(TCurve* ptr) { _ptr = ptr; } CurveObject(const CurveObject& other) { _ptr = JpmcdsCopyCurve(other._ptr); } CurveObject(CurveObject&& other) : _ptr(other._ptr) { other._ptr = nullptr; } CurveObject& operator=(const CurveObject& other) { if( this != &other) { JpmcdsFreeTCurve(_ptr); _ptr = JpmcdsCopyCurve(other._ptr); } return *this; } CurveObject& operator=(CurveObject&& other) { if( this != &other) { JpmcdsFreeTCurve(_ptr); _ptr = other._ptr; other._ptr = nullptr; } return *this; } ~CurveObject() { if(_ptr != nullptr) { JpmcdsFreeTCurve(_ptr); } } private: TCurve* _ptr; };