簡體   English   中英

從 C++ 中的地址引用返回值

[英]return value from reference of address in C++

對不起,如果我的措辭不正確,但這里是代碼:

typedef struct
{
    unsigned char bSaveRestore;
    unsigned short wPresetId;
}
uvcx_ucam_preset_t;
...
uvcx_ucam_preset_t data;
data.wPresetId = 0;
data.bSaveRestore = 0;  
setProperty(&data);
...
setProperty(void *data ...)
{
  //How to access wPresetId and bSaveRestore here...
  // The next line is where I'm using it.
  hr = ksControl->KsProperty((PKSPROPERTY)&extProp, sizeof(extProp), data, dataLen, &bytesReturned);}
  /* Here is from hsproxy.h
   STDMETHOD(KsProperty)(
        THIS_
        _In_reads_bytes_(PropertyLength) PKSPROPERTY Property,
        _In_ ULONG PropertyLength,
        _Inout_updates_bytes_(DataLength) LPVOID PropertyData,
        _In_ ULONG DataLength,
        _Inout_opt_ ULONG* BytesReturned
  */

最終,我試圖弄清楚為什么我的相機在提到的線路上重新啟動,而其他結構似乎還可以。 我只是從數據中看不到任何東西,但如果我在通話前中斷,我可以看到數據是好的。 我已經嘗試在調用之前創建一個變量 void *test = &data 並且我在嘗試訪問數據時遇到了同樣的問題。

我無法弄清楚如何處理 setProperty 中的數據。 從我在調試中玩耍:

data is the address.
&data is the address of the address.
*data gives an error "expression must be a point to a complete object type"

data是 uvcx_ucam_preset_t 類型的uvcx_ucam_preset_t&data返回data的地址,即類型為uvcx_ucam_preset_t*的指針。 setPropertyvoid*作為參數,當傳遞&data時,指針隱式轉換為void*

setProperty中,如果要訪問數據成員wPresetIdbSaveRestore ,則需要將指針顯式轉換回來。 例如

setProperty(void *data)
{
    uvcx_ucam_preset_t* p = static_cast<uvcx_ucam_preset_t*>(data);
    p->bSaveRestore = ...;
    p->wPresetId = ...;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM