簡體   English   中英

錯誤的編譯器,無法將參數2從MyStruct1轉換為const void *,對於memcpy

[英]Error compiler, cannot convert parameter 2 from MyStruct1 to const void*, for memcpy

我試圖將數據從結構復制到另一個。 每個結構可以處理的字節是相同的。 我的聲明和memcpy如下:

    typedef struct{
        CString strNumber;
        CString strAlpha;

    } _Number;

    typedef struct{
        CString strIterration;
        _Number NumberOne;
        _Number NumberTwo;
    } _Store;

_Store Data1;
_Store Data2;

現在,假設第一個結構Data1具有數據,而第二個結構剛剛被聲明。

我正在使用以下代碼:

memcpy(&Data2, Data1,   sizeof(_Store));

由於出現錯誤,我無法編譯。 有任何想法嗎? 還有其他方法可以復制數據嗎?

您需要在兩個結構上使用&

memcpy(&Data2, &Data1, sizeof(_Store));

當心: _Store包含CString成員變量,該變量(如MFC CString )不可按位復制。 您僅應在按位可復制的類型上使用memcpy() ,否則可能會遇到未定義行為的風險。

另一個明顯的方法是簡單分配,即Data2 = Data1;

這使您不必擔心_Store結構中有多少個字節,也不必擔心CString是否具有operator =。

暫無
暫無

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

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