class A;typedef A* A_factory();
class B{public:B(A_factory*);~B(){delete m_pA;}private:A* m_pA;}
A_factory sozdayet ob'ekt nuzhnogo tipa.