編輯澄清; 爲什麼不能編譯這個工作?如何獲取指向成員變量的指針memcpy
class Member{
public:
__int32 PublicInt;
}
Member x;
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32));
這是不是得到一個指向int存儲的地方的指針?
編輯澄清; 爲什麼不能編譯這個工作?如何獲取指向成員變量的指針memcpy
class Member{
public:
__int32 PublicInt;
}
Member x;
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32));
這是不是得到一個指向int存儲的地方的指針?
這裏是一個快速sample,幫助您瞭解:
#include<iostream>
#include<cstring>
class Myclass
{
public:
char str2[40];
};
int main()
{
char str1[]="Sample string";
Myclass obj;
memcpy(&(obj.str2),str1,strlen(str1)+1);
std::cout<<obj.str2;
return 0;
}
H個:)
如果變量是
int Into;
...那麼它的地址是:
&Into
請注意,你有數組引用得到是地址,所以如果ByteArray
是真的一個字節數組,我懷疑你剛纔錯過了中的&
,這就是你想要的:
memcpy(&Into, ByteArray, sizeof(__int32));
我也建議這樣做:
memcpy(&Into, ByteArray, sizeof(Into));
...如果你以後更改其類型。
你好我知道,但即時通訊談論訪問成員變量。 – user826228
@user:我不認爲*它有任何區別。你是否用'&'從'ByteArray'中移除了它(假設它真的是一個數組)? –
其假設的bytearray它不是問題的一部分其char *數組 – user826228
當你複製一個'int',你應該使用'的sizeof(int)的';當複製一個'長'尺寸(長)'等等。你現在正在混合'int'和'__int32'。 – MSalters
@ MSalters:是不是像'sizeof(Into)'更好? – KillianDS
我知道這與問題無關,所以我只是簡單地輸入了它。 – user826228