我最近一直在经历用 c++11 智能指针替换所有原始指针的过程,现在我终于完成了,但我的 DirectX 长指针除外。
我想实现以下内容:
std::shared_ptr<IDirect3D9> p_d3d;
p_d3d( Direct3DCreate9(D3D_SDK_VERSION), [](IDirect3D9 *p) {//smart pointer initialization(1)
p->Release();
});
我从 Visual Studio 收到以下错误:
错误:在没有适当的 operator() 或将函数转换为指针函数类型的情况下调用类类型的对象
我更喜欢使用 std::unique_ptr 或 std::shared_ptr 而不是 CComPtr。关于为什么会发生这种情况以及可能的实施方法的任何想法?