std :: string보다는 오히려 커스텀 String 구현을 다루는 코드를 작성하고 있습니다. 여기에서 "문자열"로 참조됩니다.msgpack_define없이 임의의 객체에 msgpack의 압축을 풉니 다
"raw"형식을 사용하여 문자열을 쉽게 팩할 수 있었지만 원시 char 바이트와 크기를 압축했지만 문제를 풀고 있습니다.
아래와 같이 수동으로 압축을 풀 수있었습니다.
// before this I've unpacked to the point where the following object has the string
msgpack::object_kv& kv = obj.via.map.ptr[0];
// kv.key == the String I want
String key = String(key.via.raw.ptr, key.via.raw.size); // this works
그러나 내장 >> 연산자 또는 .as 템플릿 함수를 사용하고 관리 할 수 없었습니다. String 클래스를 수정하여 msgpack_unpack 함수를 추가하거나 MSGPACK_DEFINE을 추가 할 필요가 없습니다.
구조체를 생성하고 msgpack_unpack 함수를 사용하려고했지만 msgpack :: object :: implicit_type 내 컴파일러는
error: 'struct msgpack::object::implicit_type' is private
로 응답 그리고 나는 "implicit_type"개체 밖으로 msgpack :: 객체를 얻기의 어떤 방법을 알아낼 수 없습니다.
아이디어가 있으십니까?
어쩌면이 작업을 수행 할 수 있습니다'문자열 & 연산자 >> (문자열, yourtype)'클래스의 구성원 대신에 구현 된 클래스 – hetepeperfan
또 다른 모습을 취한 후 나는 마침내 왜 연산자 >>에서 내 시도가 작동하지 않았다 나는 완전한 결과를 가지고 질문에 대답 할 것이다. – Zeroshade