2014-02-27 22 views
-1

我有一個函數,期望short*作爲參數。我需要將它轉換爲VARIANT_BOOL*。 任何人都可以告訴我一個可靠的方法來做到這一點?C++ short *到VARIANT_BOOL *

我甚至可以通過VARIANT_BOOL*的功能,但隨後的VARIANT_BOOL*不填充正確的值。

非常感謝您的幫助!

STDMETHODIMP CWrapper::get_IsOpen(VARIANT_BOOL* uIsOpen, LONG* pVal) 
{ 
    if (_c) 
    { 
     *pVal=_c->IsOpen(uIsOpen); //_c->IsOpen expects short* as argument 
     return S_OK; 
    } 
    else 
    { 
     return S_FALSE; 
    } 
} 
+0

退房[BOOL與VARIANT_BOOL與BOOLEAN與布爾(http://blogs.msdn.com/b/oldnewthing/archive/2004/12/22/329884.aspx)。 – herohuyongtao

回答

3

VARIANT_BOOL被定義。如果要將指向的short轉換爲VARIANT_BOOL,則需要使用*執行間接尋址。

VARIANT_BOOL vb = VARIANT_TRUE; 

short* sp = &vb; // VARIANT_BOOL to short* 

VARIANT_BOOL vb2 = *sp; // short8 to VARIANT_BOOL 
+0

謝謝!我已將我的代碼添加到發佈中。你能否告訴我,我現在應該如何做到這一點? – tmighty

+0

@tmighty你正在做的正確。 'VARIANT_BOOL *'和'short *'是一回事。 –

+0

我不得不添加\t \t // VARIANT_BOOL爲BOOL \t \t * uIsOpen * = -1;使其正常工作。 – tmighty

0

把VARIANT_BOOL放到一個簡短的位置,調用該函數,將短後置放入VARIANT_BOOL。

typedef short VARIANT_BOOL; 

所以,如果你想要一個VARIANT_BOOL傳遞給需要一個short*一個功能,您需要使用&採取其地址: