私はboost::shared_ptr
に合格する必要がありますいるProtobufのポインタであるprotobufのboost :: shared_ptrポインタを関数に渡すにはどうすればよいですか?
boost::shared_ptr<Protobuf::Person::Profile> pProfile =
boost::make_shared<Protobuf::Person::Profile>();
、いるProtobufの機能oPerson.set_allocated_profile(pProfile)
ではなくoPerson.set_allocated()
はProtobuf::Person::Profile
へのポインタを期待しています。
私はいくつかの方法を試しましたが、rapidjson上に構築されたライブラリ関数であるpbjson::pb2Json
を使用してprotobufオブジェクトをJSONに変換しようとすると、ポインタが範囲違反の原因となります。
方法1:
oPerson.set_allocated_profile(pProfile.get());
方法2:いるProtobufメッセージがoperator&
に過負荷をかけないので
oPerson.set_allocated_profile(&*pProfile);
ハード:一生に一度のあなたのスコープを確認しますメモリが使用されても有効であることを確認してください。 –