Declarações de encaminhamento e shared_ptr

Estou tentando refatorar meu código para usar declarações antecipadas em vez de incluir muitos cabeçalhos. Eu sou novo nisso e tenho uma pergunta sobre boost :: shared_ptr.

Digamos que eu tenha a seguinte interface:

#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

Eu então tenho uma função em outra classe que usa um objeto IStarterPtr como argumento, digamos:

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

Como faço para encaminhar declarar IStarterPtr sem incluir IStarter.h?

Estou usando o C ++ 98 se isso for relevante.

questionAnswers(4)

yourAnswerToTheQuestion