获取具有重载运算符和对象的对象的地址

时间:2012-03-02 15:40:05

标签: c++ com generic-programming

operator&的{​​{1}}被重载,这使我的一般代码崩溃。

我想知道是否有办法强制变量返回其对象的地址?

3 个答案:

答案 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解决方案更好一些。