• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //  Boost shared_ptr_example2 header file  -----------------------------------//
2 
3 //  Copyright Beman Dawes 2001.  Distributed under the Boost
4 //  Software License, Version 1.0. (See accompanying file
5 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 
7 
8 //  See http://www.boost.org/libs/smart_ptr for documentation.
9 
10 #include <boost/shared_ptr.hpp>
11 
12 //  This example demonstrates the handle/body idiom (also called pimpl and
13 //  several other names).  It separates the interface (in this header file)
14 //  from the implementation (in shared_ptr_example2.cpp).
15 
16 //  Note that even though example::implementation is an incomplete type in
17 //  some translation units using this header, shared_ptr< implementation >
18 //  is still valid because the type is complete where it counts - in the
19 //  shared_ptr_example2.cpp translation unit where functions requiring a
20 //  complete type are actually instantiated.
21 
22 class example
23 {
24 public:
25   example();
26   void do_something();
27 private:
28   class implementation;
29   boost::shared_ptr< implementation > _imp; // hide implementation details
30 };
31 
32