`
aigo
  • 浏览: 2714914 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

protobuf C++生成代码中使用自己定义类型参数时的set问题

阅读更多

 

如果proto结构体的变量是基础变量,比如int、string等等,那么set的时候直接调用set_xxx即可。

如果变量是自定义类型,那么C++的生成代码中,就没有set_xxx函数名,取而代之的是三个函数名:

  • set_allocated_xxx()
  • release_xxx()
  • mutable_xxx()

使用set_allocated_xxx()来设置变量的时候,变量不能是普通栈内存数据,必须是手动new出来的指针,至于何时delete,就不需要调用者关心了,protobuf内部会自动delete掉通过set_allocated_设置的内存;

release_xxx()是用来取消之前由set_allocated_xxx设置的数据,调用release_xxx以后,protobuf内部就不会自动去delete这个数据了;

mutable_xxx()是用来返回之前set_allocated_xxx设置的数据的const指针,方便你临时读取这个数据的同时,protobuf内部继续自动管理(delete)该数据。

 

更多说明见官方文档:

https://developers.google.com/protocol-buffers/docs/reference/cpp-generated

 

 

 

分享到:
评论

相关推荐

    protobuf入门

    本文将详细介绍如何使用Java来操作protobuf,主要内容分为三个部分:定义`.proto`文件、编译生成Java代码以及使用Java API进行读写操作。 #### 二、定义 `.proto` 文件 在使用protobuf之前,首先需要定义数据结构,...

    gRPC windows VS2019 C++ 拆分服务端和客户端

    接下来,为了在C++中使用这些定义,我们需要使用`protoc`编译器生成C++代码。`protoc`会生成服务接口的抽象类和消息类型的结构体,供我们实现和使用。这通常包括一个`my_service.pb.h`头文件和一个`my_service.pb.cc...

    2.5版本的破解google的.proto文件转java方法及工具。

    这些类提供了序列化和反序列化的方法,方便在Java代码中使用。 5. **使用Java类**:在你的Java应用中,你可以导入生成的类,创建消息对象,序列化成二进制数据,或者从接收到的数据反序列化回对象。 6. **示例**:...

    thrift入门

    1. **IDL(Interface Description Language)**: Thrift使用自己的接口描述语言,类似于Java的接口或protobuf的.proto文件,用来定义服务和数据类型。例如: ```idl service MyService { void sayHello(1:string ...

    CMakeListTest.txt

    control.cpp ./proto/BroadcastMsg.pb.cc)`:创建一个名为“Broadcast”的可执行文件,其源代码包括main.cpp、communication.cpp、gst_control.cpp和protobuf生成的C++文件。 11. **链接库**: - `target_link_...

Global site tag (gtag.js) - Google Analytics