【发布时间】:2021-07-23 07:46:51
【问题描述】:
我想了解如何在进程之间或跨网络传输 C++ 类的内容。
我正在阅读 Google Protobuf 教程:
https://developers.google.com/protocol-buffers/docs/cpptutorial
看来您必须创建一个抽象的非 C++ 接口来表示您的类:
syntax = "proto2";
package tutorial;
message Person {
optional string name = 1;
optional int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
}
但是,我更愿意通过 C++ 代码(而不是抽象)指定我的类,然后添加类似 serialize() 和 deserialize() 的方法。
Google Protobuf 可以做到这一点吗?或者这就是 Protobuf 的工作方式,我需要使用不同的序列化技术?
更新
这样做的原因是我不想维护两个接口。我宁愿拥有一个 C++ 类,更新它,而不必担心第二个.proto 接口/定义。代码可维护性。
【问题讨论】:
-
我曾经将它与我的手写 C++ 类结合使用过一次,尽管我可以将我的类中的内容复制到从 .proto 定义生成的类中。
标签: c++ serialization deserialization protocol-buffers