부스트 PropertyTree는 전문화를 translator_between
으로 제공하여 사용자 정의 유형을 직렬화 할 수는 있지만 문서를 찾을 수 없으며 코드가 매우 복잡 할 수 있습니다.사용자 정의 유형을 처리하기 위해 property_tree를 확장하는 방법은 무엇입니까?
0
A
답변
1
사용자 정의 유형 CustomType
의 일반적인 패턴은 다음과 같습니다
namespace boost {
namespace property_tree {
template<>
struct translator_between<KeyType, CustomType>
{
struct type {
typedef KeyType internal_type;
typedef CustomType external_type;
boost::optional<external_type> get_value(const internal_type& str);
boost::optional<internal_type> put_value(const external_type& obj);
};
};
} // namespace property_tree
} // namespace boost
KeyType
는 ptree
및 iptree
에 대한 std::string
해야하며, 일반적으로 당신의 basic_ptree
의 첫 번째 템플릿 인수에 동일해야합니다. 그런 종류의 사람이라면 type
을 템플릿으로 만들 수 있습니다.
internal_type
과 external_type
의 두 typedef는 필수이며, 에서 ptree_utils.hpp
으로 사용됩니다.
translator_between::type
을 typedef로 만들 수 있지만 기술적으로는 필요하지 않습니다. 나는 그들이 모든 예에서 그 정의를 조금 더 예쁘게 만드는 것으로 생각한다.
get_value
및 put_value
의 인수는 반드시 const &
일 필요는 없지만 그 이유를 변경할 수는 없습니다.
특히 사용자 정의 유형에 대해 스트리밍 연산자가 오버로드 된 경우 translator_between
이라는 선언을 어디에 두어야하는지주의하십시오. 이 경우 연산자의 선언 옆에 translator_between
을 넣어야합니다.
관련 문제
- 1. % = tags도 처리하기 위해 Ruby ERB를 확장하는 방법은 무엇입니까?
- 2. Delphi에서 사용자 정의 유형을 선언하는 방법은 무엇입니까?
- 3. Linq2Sql에서 사용자 정의 유형을 이해하는 방법은 무엇입니까?
- 4. 예외를 처리하기 위해 Apache HttpClient에 대한 사용자 정의 protcol 인터셉터
- 5. 사용자 정의 유형에 std :: tr1 :: hash를 확장하는 방법은 무엇입니까?
- 6. 사용자 지정 논리를 위해 구성 요소를 확장하는 방법은 무엇입니까?
- 7. F # 일반 배열 유형을 확장하는 방법은 무엇입니까?
- 8. Automocking을 위해 Unity 컨테이너를 확장하는 방법은 무엇입니까?
- 9. LinearLayout을 확장하는 사용자 정의 위젯
- 10. PHP에서 사용자 정의 오토로더가 있는데, 네임 스페이스를 확장하는 방법은 무엇입니까?
- 11. 사용자 정의 데이터로 Symfony2 Debug Toolbar를 확장하는 방법은 무엇입니까?
- 12. 전자 메일 알림을 처리하기 위해 SKU를 사용자 정의 필드로 변경
- 13. 외부에서 시작된 터치를 처리하기 위해 UISlider 사용자 정의
- 14. 반복 가능한 시퀀스를 스트림으로 처리하기 위해 std :: basic_streambuf를 확장하는 방법은 무엇입니까?
- 15. 사용자 정의 유형을 사용하는 SchemaExport
- 16. django 사용자 모델을 확장하는 방법은 무엇입니까?
- 17. Asp.net에서 멤버십을 확장하는 방법은 무엇입니까?
- 18. "사용자 정의 필드"를 업데이트하기 위해 PostgreSQL 행을 여러 행으로 확장하는 방법은 무엇입니까?
- 19. 컨트롤을 쉽게 확장하는 방법은 무엇입니까?
- 20. TagSupport를 확장하는 사용자 정의 TagLib에서 세션이 null입니다.
- 21. doctrine으로 사용자 설정 처리하기
- 22. WTL을 사용하여 사용자 정의 메시지를 올바르게 처리하기
- 23. 사용자 정의 값으로 유형을 정의하는 방법은 무엇입니까? (typedef, enum)
- 24. Spark 2.0에서 사용자 정의 유형을 사용하는 방법은 무엇입니까?
- 25. CodeIgniter에서 사용자 정의 객체 유형을 추가하는 방법은 무엇입니까?
- 26. (Ruby) DataMapper 사용자 정의 유형을 작동시키는 방법은 무엇입니까?
- 27. QML에서 사용자 정의 기본 유형을 만드는 방법은 무엇입니까?
- 28. Rspec-puppet을 사용하여 사용자 정의 유형을 테스트하는 방법은 무엇입니까?
- 29. 사용자 정의 컬렉션에있는 요소의 java 데이터 유형을 확인하는 방법은 무엇입니까?
- 30. cfhttp에서 사용자 정의 MIME 유형을 지정하는 방법은 무엇입니까?
이 문제와 관련하여 [비슷한 질문이 있습니다.] (http://stackoverflow.com/questions/9745716/change-how-boostproperty-tree-reads-translates-strings-to-bool) 예를 들어, 일반적인 설명이 아닙니다. –