operator&
for CComPtr
is overloaded, which makes my generically written code crash.
I am wondering if there is any way to force a variable into returning the address of it's object?
operator&
for CComPtr
is overloaded, which makes my generically written code crash.
I am wondering if there is any way to force a variable into returning the address of it's object?
The solution is hideous:
reinterpret_cast<CComPtr*>(&reinterpret_cast<char&>(ptr))
If you can use boost, consider using: addressof, if you cannot, take a look at the implementation.
You could cast the CComPtr
to a CComPtrBase
, which, from what I can gather from the MSDN page, has no overloaded operator. It might look like this:
CComPtr* addr=dynamic_cast<CComPtr*>(&((CComPtrBase)theCComPtr));
I don't know if this works (I can't try it), but it seems like it might, and if it does, it's a little bit better then the reinterpret_cast
solution.