_com_ptr_有一个带有副作用的重载运算符&()。如果我有一个变量:
_com_ptr_t<Interface> variable;
如何在不调用重载运算符并触发副作用的情况下检索其地址(_com_ptr_t&lt;接口&gt; *指针)?
答案 0 :(得分:7)
我见过这种情况会在ISO会议中弹出,因为它打破了一些offsetof()宏实现(LWG 273)。解决方案:&reinterpret_cast<unsigned char&>(variable)
答案 1 :(得分:3)
我定义了这个效用函数:
template<typename T>
T *GetRealAddr(T &t)
{ return reinterpret_cast<T*>(&reinterpret_cast<unsigned char &>(t)); }
答案 2 :(得分:0)
&安培; variable.GetInterfacePtr();