我主要用C語言編寫嵌入式世界的程序,最近我一直在用C++進行實驗,我有一個想法。這個問題涉及通過網絡傳輸的數據。 目前在C I這樣做人爲的例子(不考慮填料):代表網絡數據包的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++中做類似的事情嗎?
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
部分,會不會破壞?如果我使用繼承呢?這是一個愚蠢的(TM)事情嗎?
Yuck。請不要這樣做。只需讓成員函數接受/返回指向序列化消息的指針即可。封裝是你的朋友。 – kkrambo 2014-10-03 12:47:24