Declaraciones hacia adelante y shared_ptr

Estoy tratando de refactorizar mi código para que use declaraciones hacia adelante en lugar de incluir muchos encabezados. Soy nuevo en esto y tengo una pregunta con respecto a boost :: shared_ptr.

Digamos que tengo la siguiente interfaz:

#ifndef I_STARTER_H_
#define I_STARTER_H_

#include <boost/shared_ptr.hpp>

class IStarter
{
public:
    virtual ~IStarter() {};

    virtual operator()() = 0;
};

typedef boost::shared_ptr<IStarter> IStarterPtr;

#endif

Luego tengo una función en otra clase que toma un objeto IStarterPtr como argumento, por ejemplo:

virtual void addStarter(IStarterPtr starter)
{
    _starter = starter;
}
...
IStarterPtr _starter;

¿Cómo reenvío declarar IStarterPtr sin incluir IStarter.h?

Estoy usando C ++ 98 si eso es relevante.

Respuestas a la pregunta(4)

Su respuesta a la pregunta