Форвардные объявления и shared_ptr

Я пытаюсь реорганизовать свой код так, чтобы я использовал предварительные объявления вместо включения большого количества заголовков. Я новичок в этом и у меня есть вопрос, касающийся boost :: shared_ptr.

Скажем, у меня есть следующий интерфейс:

#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

Затем у меня есть функция в другом классе, которая принимает объект IStarterPtr в качестве аргумента, скажем:

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

как переслать объявление IStarterPtr без включения IStarter.h?

Я использую C ++ 98, если это актуально.