最近、すべてのrawポインターをc ++ 11スマートポインターに置き換えるプロセスを実行しましたが、DirectXの長いポインターを除いてようやく完了しました。
以下の実装に沿って何かを取得したいと思います。
std::shared_ptr<IDirect3D9> p_d3d;
p_d3d( Direct3DCreate9(D3D_SDK_VERSION), [](IDirect3D9 *p) {//smart pointer initialization(1)
p->Release();
});
VisualStudioから次のエラーが発生します。
エラー:適切なoperator()またはポインタから関数型への変換関数のないクラス型のオブジェクトの呼び出し
CComPtrよりもstd::unique_ptrまたはstd::shared_ptrを使用したいと思います。なぜこれが起こっているのか、そして可能な実装方法について何か考えはありますか?