2017-10-17 249 views
1

据我所知编译* .proto文件时,生成的类没有构造函数,也没有复制/移动构造函数。 例如,如果我有Protobuf Message构造函数

message Float3Vector{ 
    optional float x = 1; 
    optional float y = 2; 
    optional float z = 3; 
} 

我不能叫Float3Vector(my_x, my_y, my_z)。这从documentation也清楚。

到目前为止这么好。还提供了其他方法。 我的问题是,这样做有一个特别的原因吗?我的意思是说,有一个技术原因(即通过序列化,生成代码等等),这使得这不可能?

回答

1

复制被故意禁用。对于大的protobufs复制是昂贵的,并且为了防止意外复制,它被选择为使CopyFrom()明确。

移动并不需要,并且在C++ 11到达时被忽略。下一个protobuf发布可能包括移动。