2017-10-17 1 views
1

* .proto 파일을 컴파일 할 때 생성 된 클래스에 생성자 나 복사/이동 생성자가 없다는 것을 이해합니다. 내가 Float3Vector(my_x, my_y, my_z)를 호출 할 수 없습니다 예를 들어 나는Protobuf 메시지 생성자

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

이있는 경우. 이것은 documentation에서도 분명합니다.

지금까지 그렇게 좋았습니다. 다른 방법도 있습니다. 제 질문은이 작업을 수행하는 특별한 이유가 무엇입니까? 즉,이 작업을 불가능하게 만드는 기술적 인 이유가 있습니다 (예 : 직렬화, 코드 생성 등).

답변

1

복사가 의도적으로 비활성화되었습니다. 큰 protobufs 복사가 비싸고 우발적 인 복사를 방지하기 위해 CopyFrom()이 명시 적으로 선택되었습니다.

C++ 11이 도착했을 때 이동이 필요하지 않았으며 무시되었습니다. 다음 protobuf 릴리스 가능성이 포함되어 이동합니다.

관련 문제