Вы можете использовать указатель или ссылку на другой класс. Например:
class A {
public:
virtual void m() = 0;
virtual ~A() { }
};
class B {
public:
virtual void m() = 0;
virtual ~A() { }
private:
boost::scoped_ptr<A> a;
};
В C ++ 11 вы можете использовать std::unique_ptr
. Обратите внимание, что это делает B
некопируемым - что несколько характерно для классов, использующих полиморфизм подтипа.