我目前正在尝试使用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。
有人可以说明为什么会发生这种情况,或者我如何将文件解析为生成的对象?
干杯, 贾斯汀
答案 0 :(得分:0)
"有人可以说明为什么会发生这种情况,或者我如何将文件解析为生成的对象?"
ParseFromIstream()
方法在Message
基类中实现,该基类由所有生成的类继承。因此,生成器不需要为它提供任何代码。
bool Message::ParseFromIstream( istream * input)
从C ++ istream中解析协议缓冲区 如果成功,将消耗整个输入。