`
aigo
  • 浏览: 2644673 次
  • 性别: 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自动生成代码

    protobuf的语法定义了数据结构,然后可以使用protobuf编译器(protoc)将这些定义转换为不同编程语言的源代码,如C++、Java、Python等。 标题“protobuf自动生成代码”指的是利用protobuf编译器protoc来根据.proto...

    protobuf C++生成工具

    标题中的“protobuf C++生成工具”指的是Google开源的Protocol Buffers(简称protobuf)在C++语言环境下的编译工具。protobuf是一种数据序列化协议,它允许开发者定义数据结构的模式,然后生成能够在各种数据平台...

    zeromq和protobuf的c++示例代码适合初学者快速了解,上手

    通过学习这个示例,你可以掌握如何在C++中创建zeromQ客户端和服务端,以及如何使用protobuf定义消息类型和进行数据序列化。这将对你的后端开发技能有很大提升,因为这两个工具在现代分布式系统中被广泛使用。

    protobuf c++使用手册

    在 C++ 中使用 Protobuf 需要定义数据结构并通过特定工具自动生成源代码。 #### 1.2 定义 .proto 文件 为了在 C++ 中使用 Protobuf,首先需要定义一个 `.proto` 文件来描述数据结构。例如: ```protobuf message ...

    protobuf中的命名空间使用demo(C++)

    在C++编程中,protobuf提供了一种类似C++命名空间的机制,被称为“包”(package),用于组织和管理.proto文件中的消息类型和其他定义,避免了全局命名冲突的问题。 在protobuf中,命名空间主要通过在.proto文件中...

    protobuf-3.8.0 VS2019 C++使用案例

    总的来说,protobuf-3.8.0在VS2019中的使用涉及到.proto文件的编写、protoc编译器的调用、生成源代码的集成以及C++代码的编写与执行。这使得数据序列化变得简单,便于在网络通信、数据存储和跨平台项目中使用。

    protobuf C++库

    2. 使用生成的代码:在C++项目中包含生成的头文件,通过protobuf库提供的接口进行数据序列化和反序列化操作。 **三、protobuf C++库主要功能** 1. 序列化:将结构化的C++对象转换为字节流,便于存储或网络传输。...

    protobuf生成器(C++)

    在C++环境中,protobuf提供了一种强大的工具,能够将定义在.proto文件中的消息类型转换为C++源代码,便于编程和数据交换。 在标题提到的“protobuf生成器(C++)”中,这个工具主要负责读取.proto文件,该文件是...

    C++使用protobuf 作为网络消息协议

    protobuf是一种结构化的数据表示方式,它允许开发者定义数据结构(称为.proto文件),然后自动生成能够在各种编程语言中使用的代码,用于将这些数据结构序列化为二进制格式或反序列化回原结构。这种方式非常适合网络...

    lua protobuf in c++

    标签 "c++" 指出主要的工作是在C++环境中进行,这可能包括编写protobuf消息的定义文件(`.proto`),然后使用`protoc`命令行工具生成相应的C++代码。这些生成的代码包含了解析和序列化protobuf消息的函数,它们将被...

    protobuf转为lua代码

    Protocol Buffers是Google推出的一种数据序列化协议,它允许开发者定义数据结构,然后生成能够在各种语言中使用的代码,如C++, Java, Python等,同时也包括Lua。这种方式可以方便地进行数据交换和存储。 描述中提到...

    protobuf c++库

    编译并安装这个库后,你就可以在自己的C++项目中使用protobuf进行数据序列化和反序列化。确保按照README文件中的指示进行配置和构建,以便在你的开发环境中正确地链接和使用protobuf库。 总之,protobuf c++库是C++...

    protobuf 自动生成c# .cs文件

    标题中的“protobuf 自动生成c# .cs文件”是指使用Google的Protocol Buffers(简称protobuf)工具,将定义的数据结构协议文件转换为C#编程语言的.cs源代码文件。这个过程极大地简化了数据序列化和反序列化的操作,...

    google protobuf 生成c++ c#无障碍通信环境配置及脚本

    它允许开发人员定义数据结构,然后使用特殊的编译器生成可以在各种数据流中使用的代码,支持多种编程语言,包括C++、Java、Python等,而C#也是其中之一。 本文将详细讲解如何配置一个使用Google Protocol Buffers...

    protobuf java代码生成

    它允许开发者定义数据结构,然后生成可以在各种编程语言中使用的代码,便于数据的序列化和反序列化。Java作为广泛使用的编程语言之一,protobuf提供了对Java的良好支持。本篇文章将详细探讨protobuf在Java中的代码...

    protobuf-3.3.0 c++ win静态库

    4. **编写和使用protobuf消息**:在C++代码中,你可以定义`.proto`文件中的消息类型,使用protobuf提供的API进行序列化和反序列化操作。 5. **静态链接protobuf库**:在编译选项中,选择静态链接protobuf库,这样你...

    protobuf代码生成器

    它允许开发者定义数据结构的.proto文件,然后生成对应的源代码,使得在各种语言(如C++, Java, Python等)之间能够轻松地存储和交换数据。 在Python环境中,protobuf提供了`protoc`编译器,通过这个编译器,我们...

    Windows环境使用google protobuf实现简单的例子

    - 使用protoc编译器时,正确指定输入文件(.proto)和输出目录,以及指定生成C++代码的选项(--cpp_out)。 - 在VS工程中,除了将.proto生成的文件添加到项目中,还需要将它们复制到工程目录下,以避免找不到文件的...

    google protobuf 最新源代码

    google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf 最新源代码google protobuf ...

    Protobuf使用

    3. **使用生成的代码**: 在代码中创建Person对象,调用序列化和反序列化方法。 4. **存储和传输**: 序列化后的数据可以写入文件、数据库或通过网络发送。 **protobuf的多协议缓存区** 描述中提到的"多个协议...

Global site tag (gtag.js) - Google Analytics