编译的协议缓冲区代码文件没有ParseFromIstream方法

时间:2014-09-18 08:19:38

标签: c++ protocol-buffers

我目前正在尝试使用google Protocol Buffers的c ++基础教程。我没有使用教程中包含的.proto文件,而是使用OpenStreetMap PBF文件.proto定义文件。我也使用教程中提供的示例进行了测试,但我看到的结果相同。

我可以使用以下命令成功编译.proto文件: protoc -I=./doc/ --cpp_out=./src/mongosm/proto_messages/ ./doc/fileformat.proto

在引用正确的头文件并尝试打开它之后,生成的类不包含 ParseFromIstream 方法(包括已编译的教程.proto类)。

我不确定教程是否过时,但我使用的是协议缓冲库的v2.5.0。

有人可以说明为什么会发生这种情况,或者我如何将文件解析为生成的对象?

干杯, 贾斯汀

1 个答案:

答案 0 :(得分:0)

  

"有人可以说明为什么会发生这种情况,或者我如何将文件解析为生成的对象?"

ParseFromIstream() 方法在Message基类中实现,该基类由所有生成的类继承。因此,生成器不需要为它提供任何代码。

protobuf's documentation开始:

  

bool Message::ParseFromIstream( istream * input)

     

从C ++ istream中解析协议缓冲区   如果成功,将消耗整个输入。