2011-07-29 18 views
0

説明を明確にするために編集しました。 なぜこの作業はまだコンパイルされていませんか?memcpyのメンバ変数へのポインタを取得する方法

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

はこのint型が格納されている場所へのポインタを取得していないのですか?あなたの変数が

int Into; 
ある場合

+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

...そのアドレスは次のとおりです。あなたは、配列を参照して何を得るByteArrayが本当にあるので、もしは、アドレスであること

&Into 

バイト配列の場合は、 memcpy&を間違って配置したと思っています。これはあなたが望むものです:

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

また、私はこれを行うことをお勧めしたい:

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

...後でそのタイプを変更する場合には。ここで

+0

yeh私はそれを知っていますが、メンバー変数にアクセスすることを話しています。 – user826228

+1

@user:私は思っていません。あなたは 'ByteArray'から削除された'& 'を試してみましたか(本当に配列であると仮定します)? –

+0

その仮想的なbytearrayその質問の一部ではないそのchar *配列 – user826228

関連する問題