2012-02-15 2 views
1

부스트 직렬화를 사용하여 새로운 기능입니다. xml serialization 및 non-intrusive 버전을 사용하고 있습니다. 나는 튜토리얼 (Boost 웹 사이트에서) 단계별로 따라하고 내 코드가 잘 작동합니다.부스트 직렬화 및 네임 스페이스

네임 스페이스 (ns_mytests)에 클래스 (코드는 .h와 .cpp와 main.cpp 파일로 나뉩니다)를 넣을 때 문제가 발생합니다. 이 경우 컴파일러 (g ++는) 불만과 나는 다음과 같은 오류가 :

g++ -c -g test.o.d -o build/Debug/GNU-Linux-x86/sources/test.o sources/test.cpp 
/opt/local/include/boost/serialization/split_free.hpp: In static member function 'static void boost::serialization::free_saver<Archive, T>::invoke(Archive&, const T&, unsigned int) [with Archive = boost::archive::xml_oarchive, T = ns_mytests::Test]': 
/opt/local/include/boost/serialization/split_free.hpp:74: instantiated from 'void boost::serialization::split_free(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_oarchive, T = ns_mytests::Test]' 
sources/test.h:117: instantiated from 'void boost::serialization::serialize(Archive&, ns_mytests::Test&, unsigned int) [with Archive = boost::archive::xml_oarchive]' 
/opt/local/include/boost/serialization/serialization.hpp:128: instantiated from 'void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_oarchive, T = ns_mytests::Test]' 
/opt/local/include/boost/archive/detail/oserializer.hpp:148: instantiated from 'void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::archive::xml_oarchive, T = ns_mytests::Test]' 
sources/test.cpp:146: instantiated from here 
/opt/local/include/boost/serialization/split_free.hpp:45: error: no matching function for call to 'save(boost::archive::xml_oarchive&, const ns_mytests::Test&, const boost::serialization::version_type&)' 
make[2]: *** [build/Debug/GNU-Linux-x86/sources/test.o] Error 1 
make[1]: *** [.build-conf] Error 2 
make: *** [.build-impl] Error 2 

그것은 내가 뭔가를 잘못하고 있어요 있는지,하지만 내 오류를 찾을 수 could't.

도움을 주시면 감사하겠습니다.

감사합니다, westfork

+1

그것은'save (boost :: archive :: xml_oarchive, ns_mytests :: Test const &, boost :: serialization :: version_type const &)'함수를 호출하려고한다는 것을 분명히 말합니다. 함수? 그렇게한다면, 네임 스페이스는 무엇입니까? (_Hint_, _hint_, 에러뿐만 아니라 코드도 보여주십시오.) – ildjarn

+0

감사합니다. 예, 네임 스페이스에 문제가있었습니다. – westfork

답변

1

직렬화 할 수있는 유형이 정의 된 네임 스페이스의 비 간섭 save을 정의합니다.

+0

감사합니다. 이제는 작동 – westfork

+0

당신은 오신 것을 환영합니다. 어떤 도움이 되었더라도 대답을 올바르게 표시하십시오. –