title: Forward declarations and shared_ptr
body: <p>I'm trying to refactor my code so that I use forward declarations instead of including lots of headers. I'm new to this and have a question regarding boost::shared_ptr.</p>
  
  <p>Say I have the following interface:</p>
  
  <pre><code>#ifndef I_STARTER_H_
  #define I_STARTER_H_
  
  #include &lt;boost/shared_ptr.hpp&gt;
  
  class IStarter
  {
  public:
      virtual ~IStarter() {};
  
      virtual operator()() = 0;
  };
  
  typedef boost::shared_ptr&lt;IStarter&gt; IStarterPtr;
  
  #endif
  </code></pre>
  
  <p>I then have a function in another class which takes an IStarterPtr object as argument, say:</p>
  
  <pre><code>virtual void addStarter(IStarterPtr starter)
  {
      _starter = starter;
  }
  ...
  IStarterPtr _starter;
  </code></pre>
  
  <p>how do I forward declare IStarterPtr without including IStarter.h?</p>
  
  <p>I'm using C++98 if that is of relevance.</p>