私は「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);
}
しかし、コピーを作成したくない場合はどうなりますか(たとえば、重い操作であるか、多くの追加リソースが必要です)。コピーコンストラクタなしでこれを行うことはできますか?ありがとう。