あなたがやろうとしているのはシリアライゼーションです。オブジェクトをシリアル化するこの方法は安定しておらず、空港が何であるかに大きく依存します。明示的なシリアル化を使用することをお勧めします。
ここでは、シリアライゼーションとは何か、なぜこのようにするのかについて説明します。
MessagePackでは、一般的なシリアライゼーション/デシリアライゼーションのシナリオは次のようになります。
struct airport {
std::string name; //you can name your airports here
int planeCapacity;
int acceptPlanesFrom;
MSGPACK_DEFINE(name,planeCapacity,acceptPlanesFrom);
};
...
// define your airports
std::vector<airport> airports;
airport a={"BLA",1,2};
airport b={"BLB",3,4};
airports.push_back(a);
airports.push_back(b);
// create a platform-independent byte sequence from your data
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, airports) ;
std::string data=sbuf.data();//you can write that into a file
msgpack::unpacked msg;
// get your data safely back
msgpack::unpack(&msg, sbuf.data(), sbuf.size());
msgpack::object obj = msg.get();
std::cout<<obj<<std::endl;
// now convert the bytes back to your objects
std::vector<airport> read_airports;
obj.convert(&read_airports);
std::cout<<read_airports.size()<<std::endl;
コンソール出力で:
[["BLA", 1, 2], ["BLB", 3, 4]]
2