msgpack:将类打包在成员函数中

msgpack: pack the class in member-function

本文关键字:成员 函数 msgpack      更新时间:2023-10-16

我对"msgpack"很陌生。我正在尝试打包用户定义的类:

MyClass::Pack()
{
    msgpack::sbuffer sbuf;
    msgpack::pack(sbuf, this);
}

但是编译器(VC 9.0)说我

error C2228: left of '.msgpack_pack' must have class/struct/union third_partymsgpackincludemsgpackobject.hpp 218

我发现的唯一方法:

MyClass::Pack()
{
    MyClass copy(this);
    msgpack::sbuffer sbuf;
    msgpack::pack(sbuf, copy);
}

但是,如果我不想制作副本(例如,操作繁重或需要许多额外资源)怎么办?我可以在没有复制 ctor 的情况下执行此操作吗?谢谢。

调用

msgpack::pack(sbuf, this);可以msgpack::pack(sbuf, *this);以获取对象(this只是一个指针)...而且我不确定MyClass copy(this);是否在调用正确的复制构造函数......也许我错了,我还没有使用msgpack,我只是看到了C++ :(