2011-07-29 52 views
0

編輯澄清; 爲什麼不能編譯這個工作?如何獲取指向成員變量的指針memcpy

class Member{ 
public: 
__int32 PublicInt; 
} 
Member x; 
memcpy(&x.PublicInt,&ByteArray,sizeof(__int32)); 

這是不是得到一個指向int存儲的地方的指針?

+0

當你複製一個'int',你應該使用'的sizeof(int)的';當複製一個'長'尺寸(長)'等等。你現在正在混合'int'和'__int32'。 – MSalters

+0

@ MSalters:是不是像'sizeof(Into)'更好? – KillianDS

+0

我知道這與問題無關,所以我只是簡單地輸入了它。 – user826228

回答

0

這裏是一個快速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個:)

1

如果變量是

int Into; 

...那麼它的地址是:

&Into 

請注意,你有數組引用得到地址,所以如果ByteArray是真的一個字節數組,我懷疑你剛纔錯過了中的&,這就是你想要的:

memcpy(&Into, ByteArray, sizeof(__int32)); 

我也建議這樣做:

memcpy(&Into, ByteArray, sizeof(Into)); 

...如果你以後更改其類型。

+0

你好我知道,但即時通訊談論訪問成員變量。 – user826228

+1

@user:我不認爲*它有任何區別。你是否用'&'從'ByteArray'中移除了它(假設它真的是一個數組)? –

+0

其假設的bytearray它不是問題的一部分其char *數組 – user826228