データのシリアル化に苦労しています。私は何を間違っていますか?
std::string serialize(ContactsList& obj, std::string filename) {
shared_ptr<TMemoryBuffer> transportOut(new TMemoryBuffer());
shared_ptr<TBinaryProtocol> protocolOut(new TBinaryProtocol(transportOut));
obj.write(protocolOut);
std::string serialized_string = transportOut->getBufferAsString();
return serialized_string;
}
これは、別のメソッドから呼び出すメソッドです。ディスクに書き出せるシリアル化されたバイナリ文字列が返されることを期待しています。この serialize メソッド内で、TMemory バッファを作成し、それを TBinaryProtocol でラップしてから、メモリ バッファに自身を書き込むオブジェクトの write メソッドをラップします。次に、そのバッファーを文字列として取得します。次に、シリアル化された文字列をディスクに書き出します。
次のエラーが表示されます。
error: no matching function for call to ‘addressbook::ContactsList::write(boost::shared_ptr<apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport> >&)
このメモと同様に:
note: no known conversion for argument 1 from ‘boost::shared_ptr<apache::thrift::protocol::TBinaryProtocolT<apache::thrift::transport::TTransport> >’ to ‘apache::thrift::protocol::TProtocol*
これらのことが違いを生む場合、私はApache Thrift 1.0-dev、C++ 98を使用しています。