HeLei Blog

Protocal Buffer trap 1-CopyFrom

最近在使用pb时遇到了这么一个问题,还是废了不少时间去定位,出现coredump的场景类似下面的代码

1
2
3
4
Student stu;
Teacher teacher;
stu.CopyFrom(teacher);

奇怪的是这样居然可以编译通过,查了pb的源码发现类都是共同的基类Message,而有两个overload版本

1
2
void CopyFrom(const ::google::protobuf::Message& from);
void CopyFrom(const Student& from);

终于恍然大悟了!!

坚持原创技术分享,您的支持将鼓励我继续创作!