2

バッファから解析するときは、バッファの正確なクラス タイプ (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);
    ....        
}
4

0 に答える 0