Так я структура создана как такКопирование начиная со смещения в начале структуры
EDIT: PLAYERCOORDS = 1, определяется в начале моего кода
struct PLAYERCOORDINATESSTRUCT
{
int type, x, y;
bool isalive;
bool isconnected;
PLAYERCOORDINATESSTRUCT(int customx, int customy, bool customisalive, bool customisconnected)
{
type=(PLAYERCOORDS);
x = customx;
y = customy;
isalive = customisalive;
isconnected = customisconnected;
}
PLAYERCOORDINATESSTRUCT()
{
type=(PLAYERCOORDS);
}
};
char* bufferwithstructdata = new char[sizeof(PLAYERCOORDINATESSTRUCT)-4];
//-4 since it's missing first int
PLAYERCOORDINATESSTRUCT testdata;
memcpy(&testdata,bufferwithstructdata,sizeof(PLAYERCOORDINATESSTRUCT)-4)
У меня есть символ буфер, который хранит всю информацию для одной из этих структур, за исключением типа int (первые 4 байта структуры)
Я пытаюсь выяснить, как правильно memcpy это использовать источник со смещением. Я обнаружил, что мне нужно иметь 4 байта от адреса структуры, чтобы начать с int x. Тем не менее, я обнаружил, что когда я попытался добавить 4 к адресу, выполнив (& testdata + 4), он вместо этого добавил 40 к адресу! Кто-нибудь знает, как я могу memcpy со смещением 4 байта в структуру, или способ, которым я мог бы просто смещать адрес на 4 байта вместо 10 за раз?
Большое спасибо за чтение.
Большое вам спасибо CrazyCasta! Я был настолько потрясен XD – user2980207
[offsetof] (http://en.cppreference.com/w/cpp/types/offsetof) мог бы сделать этот код более переносимым (и более простым для чтения). – Lalaland