0

我对“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);
}

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

4

1 回答 1

1

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

于 2012-12-12T14:30:10.130 回答