华为应用市场上架关键要求
2026/6/30 17:05:40
.proto文件本质就是声明结构化数据:
message Person { optional uint32 age = 1; optional string name = 2; repeated uint32 scores = 3; }编译后自动生成 C++ 类,等价形式:
classPerson{public:// 普通字段uint32age()const;voidset_age(uint32 value);conststd::string&name()const;voidset_name(conststd::string&value);// 数组字段intscores_size()const;uint32scores(intindex)const;voidadd_scores(uint32 value);};在 proto 文件最顶部声明:
package xxx;package等价于 C++ 的namespace xxxxxx::Person,或者using namespace xxx;proto 定义:
optional uint32 age = 1;C++ 接口:
person.set_age(18);// 写入值person.age();// 读取值person.has_age();// 判断字段是否被赋值person.clear_age();// 清空此字段proto 定义:
repeated uint32 scores = 3;C++ 接口:
person.add_scores(90);// 向数组追加元素person.scores_size();// 获取数组长度person.scores(0);// 读取下标为0的元素person.mutable_scores(0);// 获取可修改元素的指针(复杂对象常用)person.clear_scores();// 清空整个数组proto 嵌套定义:
message Item { optional int32 id = 1; } message Bag { optional Item item = 1; }C++ 接口:
bag.mutable_item()->set_id(1001);// 获取可写子对象bag.item().id();// 只读访问子对象bag.has_item();// 判断子对象是否存在bag.clear_item();// 清空子对象| 场景 | 方法名 |
|---|---|
| 读取普通基础字段 | xxx() |
| 修改普通基础字段 | set_xxx(value) |
| 只读访问嵌套message | xxx() |
| 获取可写嵌套message | mutable_xxx() |
| repeated数组元素个数 | xxx_size() |
| repeated数组追加元素 | add_xxx() |
| repeated数组读取下标元素 | xxx(i) |
| repeated数组修改下标元素 | mutable_xxx(i) |
obj.CopyFrom(other);// 完整复制另一个对象obj.Clear();// 清空所有字段obj.ShortDebugString();// 打印结构化文本,用于调试