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

10-11 18:52