Как получить указатель на переменную-член для memcpy - PullRequest
0 голосов
/ 29 июля 2011

отредактировано для уточнения; почему эта работа еще не скомпилирована?

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

это не получить указатель на место, где хранится int?

Ответы [ 2 ]

1 голос
/ 29 июля 2011

Если ваша переменная

int Into;

... тогда его адрес:

&Into

Обратите внимание, что вы получаете со ссылкой на массив адрес , поэтому, если ByteArray действительно байтовый массив, я подозреваю, что вы просто поместили & в memcpy что это то, что вы хотите:

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

Я бы также порекомендовал сделать это:

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

... в случае, если вы измените его тип позже.

0 голосов
/ 29 июля 2011

Вот быстрый образец , который поможет вам понять:

#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;
}

Hth :)

...