boost::asioの送信者/受信者のために構造体をシリアル化するためにユニオンを使用している人はいないのだろうか。私は何かを検索しましたが、私が見つけたのは(まだ)このような例かこれだけでした。
だから私はそれをこのようにやった:
struct ST {
short a;
long b;
float c;
char c[256];
}
...
void sender::send(const ST &_packet) {
union {
const ST &s;
char (&c)[sizeof(ST)];
}usc = {_packet};
socket.send_to(boost::asio::buffer(usc.c, sizeof(ST)), endpoint);
}
...
ST var = {1234, -1234, 1.4567, "some text"};
sercer.send(var);
だから私の質問は、基本的なデータ型のシリアル化を行うためのこの悪い習慣ですか?
var-sizeの文字列を直接送信できないことはわかっているので、boost::serializationを使用できます。