Let's say I have a class that owns D3DDevice:
class Thing
{
public:
Thing()
{
D3D11CreateDevice(..., &device, ...);
}
~Thing()
{
device->Release();
}
private:
ID3D11Device* device;
};
From what I understand, I can use _com_ptr_tto ensure that the object will be deleted without my explicit call Release()in the destructor. The problem is that I cannot understand the correct syntax for the template.
I could find almost no information about _com_ptr_t, and the closest I could find for an answer was this (Japanese) one . After the syntax, I get a bunch of compiler errors:
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
By the way, I can use this to return COM pointers from functions and ensure that they will be deleted when they leave the call area, right?
source
share