返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++ protobuf中如何对不同消息内容进行赋值
  • 487
分享到

C++ protobuf中如何对不同消息内容进行赋值

2023-07-05 16:07:41 487人浏览 独家记忆
摘要

今天小编给大家分享一下c++ protobuf中如何对不同消息内容进行赋值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一

今天小编给大家分享一下c++ protobuf中如何对不同消息内容进行赋值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

本文中用到的消息结构:

message PointLLHA {// 通用的坐标点(经度纬度朝向高度),所有跟坐标相关的能够用就统一用这个  optional double longitude = 1;// 经度坐标  optional double latitude = 2;// 纬度坐标  optional double heading = 3;// 朝向  optional double altitude = 4;// 高度  optional double timestamp_sec = 5;// 时间戳}message VehicleHeartbeat {// 无人车的心跳  optional bool is_nORMal = 1;  optional PointLLHA vehicle_pose = 2;  optional double vehicle_speed = 3;}message VehicleRoutingInfo {  // 无人车全局路径规划的结果  repeated PointLLHA way_points = 1; }

1.简单(非嵌套)消息内容的赋值

简单的消息内容直接用set_来赋值就行。

赋值方式:

vehicle_heartbeat.set_vehicle_speed(1.2);

2.嵌套消息内容的赋值

自己定义的复杂嵌套消息不能够通过简单的set_来赋值,可采取set_allocated和mutable_两种方式,但是二者的赋值方式是不同的。

使用set_allocated_,赋值的对象需要new出来,不能用局部的,因为这里用的的是对象的指针。当局部的对象被销毁后,就会报错。

错误的赋值方式:

PointLLHA point;point.set_longitude(116.20);point.set_latitude(39.56);vehicle_heartbeat.set_allocated_vehicle_pose(&point);// 这里传入的是一个马上会被销毁的指针

使用mutable_,赋值时候,可以使用局部变量,因为在调用的时,内部做了new操作。

赋值方式1(使用set_allocated_):

PointLLHA *point = new PointLLHA;point->set_longitude(116.20);point->set_latitude(39.56);vehicle_heartbeat.set_allocated_vehicle_pose(point);// 这里传入的是一个指针

赋值方式2(使用mutable_):

PointLLHA point;point.set_longitude(116.20);point.set_latitude(39.56);vehicle_heartbeat.mutable_vehicle_pose()->CopyFrom(point);// 这里传入的是一个变量,mutable内部有一个new函数

3.重复消息内容的赋值

带有repeated字段的消息,通过add_依次赋值。

赋值方式:

// 第一个点PointLLHA *way_point = vehicle_routing_info.add_way_points();way_point->set_longitude(116.20);way_point->set_latitude(39.56);// 第二个点PointLLHA *way_point = vehicle_routing_info.add_way_points();way_point->set_longitude(116.21);way_point->set_latitude(39.57);

以上就是“C++ protobuf中如何对不同消息内容进行赋值”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网其他教程频道。

--结束END--

本文标题: C++ protobuf中如何对不同消息内容进行赋值

本文链接: https://lsjlt.com/news/353475.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++ protobuf中如何对不同消息内容进行赋值
    今天小编给大家分享一下C++ protobuf中如何对不同消息内容进行赋值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-07-05
  • C#如何对消息进行封装
    这篇文章给大家分享的是有关C#如何对消息进行封装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、C#消息概述 Windows下应用程序的执行是通过消息驱动的。消息是整个应用程序的工作引擎,我们需要理解掌握我们使...
    99+
    2023-06-17
  • python 如何用pandas同时对多列进行赋值
    本篇内容主要讲解“python 如何用pandas同时对多列进行赋值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python 如何用pandas同时对多列进行赋值”吧!如dataframe&n...
    99+
    2023-06-14
  • 如何在java中对数组进行赋值
    这期内容当中小编将会给大家带来有关如何在java中对数组进行赋值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客...
    99+
    2023-06-14
  • 如何使用MPI_Reduce对来自不同处理器组的不同值进行独立求和
    使用MPI_Reduce函数可以对来自不同处理器组的不同值进行独立求和。以下是使用MPI_Reduce进行求和的步骤:1. 导入MP...
    99+
    2023-09-27
    MPI_Reduce
  • seo中如何针对不同时期的网站进行优化
    小编给大家分享一下seo中如何针对不同时期的网站进行优化,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一般优化网站大致分为三期:前期(新站期)、中期(引流竞争期)、后期(维护期),而这三期都是需要花费很长时间一步一步过度的...
    99+
    2023-06-10
  • C++ 函数的递归实现:如何在不同的编译器中进行优化?
    递归在 c++++ 中的优化方法有:尾调用优化 (tco): 将递归调用替换为循环,消除栈溢出风险,在 gcc 和 clang 编译器中支持。尾递归消除 (tre): 完全消除所有递归调...
    99+
    2024-04-23
    c++ 递归
  • C/C++中多进程之间的线程如何利用XSI IPC共享内存分配互斥量进行同步
    这篇文章主要介绍了C/C++中多进程之间的线程如何利用XSI IPC共享内存分配互斥量进行同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。#include <stdi...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作