class A;typedef A* A_factory();
class B{public:B(A_factory* factory){m_pA = (*facory)();};~B(){delete m_pA;}private:A* m_pA;}
Razumeetsya A dolzhen imet' virtual'nyi destructor