operator&
的{{1}}被重载,这使我的一般代码崩溃。
我想知道是否有办法强制变量返回其对象的地址?
答案 0 :(得分:4)
解决方案很可怕:
reinterpret_cast<CComPtr*>(&reinterpret_cast<char&>(ptr))
答案 1 :(得分:2)
如果您可以使用boost,请考虑使用:addressof,如果不能,请查看实现。
答案 2 :(得分:0)
您可以将CComPtr
转换为CComPtrBase
,这可以从我从MSDN页面收集的内容中没有重载运算符。它可能看起来像这样:
CComPtr* addr=dynamic_cast<CComPtr*>(&((CComPtrBase)theCComPtr));
我不知道这是否有效(我无法尝试),但它似乎可能,如果确实如此,它比reinterpret_cast
解决方案更好一些。