proto3中设置变量
转自:https://blog.csdn.net/xiaxiazls/article/details/50118161
https://blog.csdn.net/swartz_lubel/article/details/79193291,这里举的例子不错。
1、介绍
针对一个复杂对象类型,set_allocated_answer(*),是需要传入一个手动new的对象,而不是一个局部变量。 否则运行的时候会有问题。
inline void PlayerPos::set_allocated_pos(::vector3D* pos) { delete pos_; //会先删除原来的指针指向 pos_ = pos; if (pos) { set_has_pos(); } else { clear_has_pos(); } }
如果是拷贝,可以直接copyFrom另外一个对象。
也可以使用mutable_(),这样函数在内部自动new了一个对象返回:
inline ::vector3D* PlayerPos::mutable_pos() { set_has_pos(); if (pos_ == NULL) pos_ = new ::vector3D; //new return pos_; }