c++ - msgpack:将类打包到成员函数中

标签 c++ msgpack

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

相关文章:

javascript - 如何在 IE WebBrowser 控件中禁用 javascript 错误调试

go - 消息包之间的转换

javascript - 在 Javascript(浏览器)中获取 YAML 或 MsgPack

c - 如何使用 msgpack-c 正确解包和提取数据?

python - 如何解决ModuleNotFoundError : No module named 'srsly.msgpack.util' in PyInstaller?

c++ - 如何根据一对枚举的值选择一个 Action ?

android - 使用 libzip 在 zip 中写入文件

c++ - 将数组转换为编码字符串

c - 解包的 msgpack_object 是否依赖于解包的缓冲区?

c++ - 推导(非类型)模板参数类型的编译器方差