저는 주로 임베디드 세계에서 C로 프로그램을 작성했으며 최근에는 C++로 실험하고 있습니다. 이 질문은 네트워크를 통해 전송 된 데이터에 관한 것입니다.네트워크 패킷을 나타내는 C++ 클래스
typedef struct {
time_t date;
float value;
} Message1;
typedef union {
char raw[sizeof(Message1)];
Message1 msg;
} Overlay;
int my_func(Message1* ptr)
{
/* do stuff with stuff */
}
데이터 Overlay.raw
에 넣고 msg
을 통해 검사한다 (물론 엔디 언에 대한) : 현재 C에서 이런 인위적인 예처럼 (무시 포장) 뭔가. 구조체를 사용하지 않고 C++에서 비슷한 작업을 수행 할 수 있습니까?
class Message1 {
public:
time_t date;
float value;
int my_func() { /* do stuff with stuff */ };
}
typedef union {
char raw[sizeof(Message1)];
Message1 msg;
}
나는 몇 가지 실험을 해봤에서이 지금까지 작동하는 보인다 내가 그것을 알 수 있습니다. 그러나 C++이 클래스에서 어떻게 정렬되는지에 대한 자세한 내용을 알고 싶습니다. 마찬가지로 public
섹션 뒤에 private
섹션을 추가하면 어떻게됩니까? 상속을 사용하면 어떨까요? 이건 멍청한 짓이야?
턱. 제발 하지마. 직렬화 된 메시지에 대한 포인터를 수락하거나 반환하는 멤버 함수를 만들면됩니다. 캡슐화는 당신의 친구입니다. – kkrambo