1
저는 C++을 처음 접했고 어떻게 포인터와 템플릿을 공유하는 구조체를 직렬화합니까? 다음은 샘플 코드입니다.공유 포인터 및 템플릿을 사용하여 serilaization을 향상 시키십시오.
#pragma once
#include <boost/serialization/access.hpp>
#include <boost\serialization\string.hpp>
#include <boost\serialization\shared_ptr.hpp>
//Mydata.hpp file
namespace mydata
{
struct MyData
{
std::string name;
std::string type;
std::shared_ptr<MyInfo> myref;
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int vs)
{
ar & name;
ar & type;
ar & myref;
}
}
}
어떻게 공유 포인터에 해당 Mydata.cpp 파일을 구현합니까?
코드 위 내가 갈 항상 – sia
[템플릿 정의 파일 Mydata.cpp에서 그것을 구현해야 할 헤더로] (http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file/495056#495056). 그렇지 않으면, 그것은 당신의 선택입니다. 직렬화 논리를 바로 원하지 않는다면 [비 침투 직렬화 적응] (http://www.boost.org/doc/libs/1_55_0/libs/serialization/doc/tutorial.html##)을 참조하십시오. nonintrusiveversion) 기존 (공개 또는 제 3 자) 클래스에 멤버를 추가 할 필요가없는 – sehe