2017-10-17 248 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發佈可能包括移動。