当我从缓冲区解析时,我必须知道缓冲区的确切类类型(myclass)是什么。所以我不能以统一的方式处理所有的缓冲区解析。我必须区分每个类的类型(可以吗?)。
我的问题是“如何以统一的方式处理所有缓冲区解析,而不需要关心确切的类类型。”有什么解决方案吗?谢谢你的帮助!
class myclass {
private:
std::string m_str;
std::vector<int> m_vec;
public:
MSGPACK_DEFINE(m_str, m_vec);
};
int main(void) {
std::vector<myclass> vec;
// add some elements into vec...
// you can serialize myclass directly
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, vec);
msgpack::unpacked msg;
msgpack::unpack(&msg, sbuf.data(), sbuf.size());
msgpack::object obj = msg.get();
// you can convert object to myclass directly
std::vector<myclass> rvec;
obj.convert(&rvec);
}
我预计它会像这样工作
class base
{
.....
};
class A:public base
{
....
};
class B:public base
{
....
};
base* parse(msgpack::sbuffer sbuf)
{
...
}
int main(void)
{
A a;
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, a);
base* a1 = parse(sbuf);
....
B b;
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, b);
base* b1 = parse(sbuf);
....
}