我对“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);
}
但是,如果我不想复制(例如,操作繁重或需要许多额外资源),该怎么办?我可以在没有副本的情况下这样做吗?感谢。
答案 0 :(得分:1)
调用msgpack::pack(sbuf, this);
可能是msgpack::pack(sbuf, *this);
来获取对象(this
只是一个指针)......而且我不确定MyClass copy(this);
是否正在调用正确的复制构造函数...也许我错了,我还没有使用msgpack,我只看到C ++ :(