1
최근에는 객체 벡터가 포함 된 클래스를 직렬화하려고했습니다. #include <boost/serialization/vector.hpp>을 포함 시키면 간단한 & 연산자로 처리 할 수 있습니다. 불행하게도, 컴파일러는 직렬화 코드를 작성하기로 동의하지만, 역 직렬화 테스트 케이스를 컴파일 할 수는 없습니다. 거기에 무슨 문제가 있을까요?부스트 :: serialize - 개체의 벡터를 deserialize 하시겠습니까?
> make testcase
g++ -ggdb -fpermissive testcase.cpp -o testcase
In file included from /usr/include/boost/archive/detail/oserializer.hpp:67:0,
from /usr/include/boost/archive/detail/interface_oarchive.hpp:23,
from /usr/include/boost/archive/detail/common_oarchive.hpp:22,
from /usr/include/boost/archive/basic_text_oarchive.hpp:32,
from /usr/include/boost/archive/text_oarchive.hpp:31,
from testcase.cpp:1:
/usr/include/boost/archive/detail/check.hpp: In instantiation of ‘void boost::archive::detail::check_const_loading() [with T = const std::vector<A>]’:
/usr/include/boost/archive/detail/iserializer.hpp:577:5: required from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::text_iarchive; T = const std::vector<A>]’
/usr/include/boost/archive/detail/common_iarchive.hpp:66:9: required from ‘void boost::archive::detail::common_iarchive<Archive>::load_override(T&, int) [with T = const std::vector<A>; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/basic_text_iarchive.hpp:65:9: required from ‘void boost::archive::basic_text_iarchive<Archive>::load_override(T&, int) [with T = const std::vector<A>; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/text_iarchive.hpp:82:9: required from ‘void boost::archive::text_iarchive_impl<Archive>::load_override(T&, int) [with T = const std::vector<A>; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = const std::vector<A>; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/detail/interface_iarchive.hpp:67:35: [ skipping 9 instantiation contexts ]
/usr/include/boost/archive/detail/iserializer.hpp:592:5: required from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::text_iarchive; T = B]’
/usr/include/boost/archive/detail/common_iarchive.hpp:66:9: required from ‘void boost::archive::detail::common_iarchive<Archive>::load_override(T&, int) [with T = B; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/basic_text_iarchive.hpp:65:9: required from ‘void boost::archive::basic_text_iarchive<Archive>::load_override(T&, int) [with T = B; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/text_iarchive.hpp:82:9: required from ‘void boost::archive::text_iarchive_impl<Archive>::load_override(T&, int) [with T = B; Archive = boost::archive::text_iarchive]’
/usr/include/boost/archive/detail/interface_iarchive.hpp:60:9: required from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = B; Archive = boost::archive::text_iarchive]’
testcase.cpp:35:8: required from here
/usr/include/boost/archive/detail/check.hpp:162:1: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
@ Ryan Guthrie 잘못되었습니다. Boost.Serialization은에서이를 구현합니다. –
STATIC_ASSERTION_FAILURE 행으로 이동하여 주석을 확인하십시오. –
@Igor R - 죄송합니다. - 죄송합니다. - 의견이 삭제되었습니다. –