msgpack десериализует переполнение стека

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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]