Когда я анализирую из буфера, я должен знать, каков точный тип класса (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);
....
}
Задача ещё не решена.
Других решений пока нет …