////////////////////////////////////////////// // MT3Q3.cpp - static creational function #include class IOp { public: virtual ~IOp() {} virtual void op() = 0; static IOp* Create(); }; class Op : public IOp { public: void op() { std::cout << "\n " << typeid(*this).name() << "::op() call"; } }; IOp* IOp::Create() { return new Op(); } void main() { IOp* pIOp = IOp::Create(); pIOp -> op(); std::cout << "\n\n"; }