我对“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);
}
但是如果我不想制作拷贝怎么办(例如,这是繁重的操作或需要很多额外的资源)?我可以在没有复制 ctor 的情况下执行此操作吗?谢谢。
最佳答案
调用 msgpack::pack(sbuf, this);
可以是 msgpack::pack(sbuf, *this);
来获取一个对象( this
只是一个指针)...而且我不确定 MyClass copy(this);
是否调用了正确的复制构造函数...也许我错了,我做到了还没有使用 msgpack,我只看到 C++ :(
关于c++ - msgpack:将类打包到成员函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841809/