У меня есть два разных приложения. Я должен отправить информацию из одного приложения в другое. В одном приложении есть кодировка в объекте класса, а в другом приложении она декодируется в объекте структуры с теми же типами данных.
Правильно ли реализовано копирование объекта класса в структуру с одинаковыми типами данных? или я должен изменить одну из частей кодирования / декодирования?
Я попробовал, кажется, что это правильно memcpy, но я не понимаю, правильно это или нет ..
Например ...
#include <iostream>
#include <cstring>
class capn{
public:
unsigned short int apn[8];
unsigned short int a;
};
class creq{
public:
capn a1;
capn a2;
unsigned short int t;
capn a3;
};
class cy{
public:
capn a1;
capn a2;
unsigned short int aaa[34];
capn a3;
unsigned short int bbb[12];
};
class cx{
public:
cx(){
a=0;
b=0;
c=0;
memset(d,0,8);
}
unsigned int a;
unsigned int b;
unsigned int c;
union {
creq requ;
cy pasd;
};
unsigned short int d[8];
};
struct apn{
unsigned short int apn[8];
unsigned short int a;
};
struct req{
struct apn a1;
struct apn a2;
unsigned short int t;
struct apn a3;
};
struct y{
struct apn a1;
struct apn a2;
unsigned short int aaa[34];
struct apn a3;
unsigned short int bbb[12];
};
struct x{
unsigned int a;
unsigned int b;
unsigned int c;
union {
struct req requ;
struct y pasd;
};
unsigned short int d[8];
};
int main()
{
struct x ox;
ox.a=1;
ox.b=2;
ox.c=3;
ox.d[0]=4;
ox.requ.a1.a=5;
ox.requ.t=6;
cx obj;
std::cout<<sizeof(ox)<<std::endl;
std::cout<<sizeof(obj)<<std::endl;
memcpy(&obj,&ox,sizeof(ox));
std::cout<<obj.a<<" " <<obj.b<< " " <<obj.c<< " "<<obj.d[0]<< " " <<obj.requ.a1.a<<" "<<obj.requ.t<<std::endl;
return 0;
}