d.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 89 行
HPP
89 行
#ifndef BOOST_SERIALIZATION_TEST_D_HPP#define BOOST_SERIALIZATION_TEST_D_HPP// MS compatible compilers support #pragma once#if defined(_MSC_VER) && (_MSC_VER >= 1020)# pragma once#endif/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8// D.hpp// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . // Use, modification and distribution is subject to the Boost Software// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)// See http://www.boost.org for updates, documentation, and revision history.#include <cstddef> // NULL#include "test_tools.hpp"#include <boost/detail/no_exceptions_support.hpp>#include <boost/serialization/throw_exception.hpp>#include <boost/serialization/split_member.hpp>#include "B.hpp"///////////////////////////////////////////////////////// Contained class with multiple identical pointersclass D{private: friend class boost::serialization::access; B *b1; B *b2; template<class Archive> void save(Archive &ar, const unsigned int file_version) const{ ar << BOOST_SERIALIZATION_NVP(b1); ar << BOOST_SERIALIZATION_NVP(b2); } template<class Archive> void load(Archive & ar, const unsigned int file_version){ BOOST_TRY { ar >> boost::serialization::make_nvp("b", b1); ar >> boost::serialization::make_nvp("b", b2); } BOOST_CATCH (...){ // eliminate invalid pointers b1 = NULL; b2 = NULL; BOOST_FAIL( "multiple identical pointers failed to load" ); } BOOST_CATCH_END // check that loading was correct BOOST_CHECK(b1 == b2); } BOOST_SERIALIZATION_SPLIT_MEMBER()public: D(); ~D(); bool operator==(const D &rhs) const;};BOOST_CLASS_VERSION(D, 3)D::D(){ b1 = new B(); b2 = b1;}D::~D(){ delete b1;}bool D::operator==(const D &rhs) const{ if(! (*b1 == *(rhs.b1)) ) return false; if(! (*b2 == *(rhs.b2)) ) return false; return true;}#endif // BOOST_SERIALIZATION_TEST_D_HPP
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?