0

私は「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);
}

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

4

1 に答える 1

1

オブジェクトを取得するための呼び出しmsgpack::pack(sbuf, this);である可能性があります (単なるポインターです) ...そして、それが適切なコピー コンストラクターを呼び出しているかどうかはわかりません...おそらく私は間違っています。まだ msgpack を使用していません。C++ しか表示されません。 :(msgpack::pack(sbuf, *this);thisMyClass copy(this);

于 2012-12-12T14:30:10.130 に答える