[英]Why the MVS compiler can convert argument 'myStruct' to 'myStruct &'. And did not file error C2664: cannot convert 'myStruct' to 'myStruct &'
[英]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.