msgpack:在member-function中打包类

时间:2012-12-12 14:20:02

标签: c++ msgpack

我对“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_party\msgpack\include\msgpack\object.hpp 218

我找到的唯一方法:

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

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

1 个答案:

答案 0 :(得分:1)

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