假设我有一个拥有 a 的类D3DDevice
:
class Thing
{
public:
Thing()
{
D3D11CreateDevice(..., &device, ...);
}
~Thing()
{
device->Release();
}
private:
ID3D11Device* device;
};
据我了解,我可以_com_ptr_t
用来确保对象被删除,而无需显式调用Release()
析构函数。但问题是我无法找出模板的正确语法。
我几乎找不到任何关于的信息_com_ptr_t
,而我能找到的最接近答案的是这个(日语)。按照那里的语法,我得到了一堆编译器错误:
private:
//ID3D11Device* device;
_com_ptr_t <_com_IIID<ID3D11Device, &__uuidof(ID3D11Device)>> device;
error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
error C2065: 'device' : undeclared identifier
顺便说一句,我可以使用它从函数返回 COM 指针,并确保它们在离开调用者范围时被删除,对吗?