我对“ 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/