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_;
}

 

posted @ 2023-09-24 23:46  lypbendlf  阅读(28)  评论(0编辑  收藏  举报