_com_ptr_重載運算符&()有副作用。如果我有一個變量:如果一個運算符爲C++類重載,我該如何使用默認運算符呢?
_com_ptr_t<Interface> variable;
我怎麼能檢索其地址(_com_ptr_t <接口> *指針),而不調用重載運算符和引發副作用?
_com_ptr_重載運算符&()有副作用。如果我有一個變量:如果一個運算符爲C++類重載,我該如何使用默認運算符呢?
_com_ptr_t<Interface> variable;
我怎麼能檢索其地址(_com_ptr_t <接口> *指針),而不調用重載運算符和引發副作用?
我見過這種情況在ISO會議中彈出,因爲它破壞了一些offsetof()宏實現(LWG 273)。解決辦法:&reinterpret_cast<unsigned char&>(variable)
& variable.GetInterfacePtr();
這將檢索存儲在智能指針中的指針地址。不過,我認爲問題是關於如何獲取智能指針的地址。 – 2009-07-17 11:12:50
我定義這個效用函數:
template<typename T>
T *GetRealAddr(T &t)
{ return reinterpret_cast<T*>(&reinterpret_cast<unsigned char &>(t)); }
你想的`_com_ptr_t *`或`的接口*`? –
MSalters
2009-07-17 11:11:08
我想要一個_com_ptr_t <> *。 – sharptooth 2009-07-17 11:11:55