0
msgpack을 통해 다음 구조체를 보내고 싶습니다.msgpage C++ : MSGPACK_DEFINE을 사용하여 원시 포인터를 보내십시오.
struct MyStruct {
std::string name{""};
int* val{nullptr};
MSGPACK_DEFINE(name, val);
};
지금까지 내 프로젝트, 내가 msgpack 다음 :: msgpack하는 sbuffer을 구조체를 작성 (및 보내기), MSGPACK_DEFINE을 사용하여 스트리밍 한 유일한 방법은 모든있다. MSGPACK_DEFINE 매크로는 아마도 "->"를 놓쳤다 고 불평하므로 포인터라고 감지하지 못합니다.
스마트 포인터는하지만 제대로 작동 :
struct MyStruct {
std::string name{""};
std::shared_ptr<int> val{nullptr};
MSGPACK_DEFINE(name, val);
};
주의해야 할 점은 다른 쪽 끝에있는 수신기가 원시 포인터로 발을 필요로한다는 것이다. 수신 측에서 변환하지 않고이 작업을하고 싶습니다. 어떤 아이디어?
그건 간단한 예일뿐입니다. 실제로 이것은 다른 구조체에 대한 포인터입니다. 나는 나무 구조를 보내고있다. 난 (어떻게 든) 그것을 직렬화 괜찮지 만 작동하지 않을 수도있는 모든 msgpack 매크로 또는 그것 주위의 방법을 모르고. 대답은 백 엔드에서 간단한 구조로 생각하고받는 쪽의 모든 포인터를 사용하여 모든 마법을 수행하는 것입니다. –
다시 말씀 드리 자면, 포인터는 직렬화 될 때 결코 의미가 없습니다. –
이것을 정리해 보겠습니다. 매크로가 포인터를 역 참조 (dereference)하고 의미있는 방식으로 나를 위해 직렬화 할 수 있는지 궁금합니다. 그것은 shared_ptr에 래핑 된 경우, 잘 작동합니다. –