proto3中设置变量

发布时间 2023-09-24 23:53:39作者: lypbendlf

转自: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_;
}