@kennytmさんのコメントは答えになりました。
私はあなたのケースに基づいて完全な作業コードの例に答えています。 MSGPACK_DEFINE_MAPはマップベースのシリアル化を提供します。そのため、適応したいメンバー変数を選択することができます。また、次のオンラインコンパイラ上記のコードを実行することができます
#include <iostream>
#include <sstream>
#include <msgpack.hpp>
struct S1 {
int varA;
int varB;
int varC;
MSGPACK_DEFINE_MAP(varA, varB, varC);
};
struct S2 {
int varA;
int varC;
MSGPACK_DEFINE_MAP(varA, varC);
};
int main() {
S1 s1 { 1, 2, 3};
std::stringstream ss;
msgpack::pack(ss, s1);
auto oh = msgpack::unpack(ss.str().data(), ss.str().size());
auto s2 = oh.get().as<S2>();
std::cout << s2.varA << "," << s2.varC << std::endl;
}
: http://melpon.org/wandbox/permlink/NbaSjMPdtdwqBp7m
'MSGPACK_DEFINE'は何ですか?マクロ? –
@NicolBolas https://github.com/msgpack/msgpack-c/wiki/v2_0_cpp_adaptor#defining-custom-adaptors – kennytm