Factory mode, creating the corresponding instance class based on the ID
main.cpp//testcpp1////Created by Bianchx on 15/4/27.//Copyright (c) 2015 Bianchx. All rights reserved.//#include <iostream> #include <map>class baseclass{public:virtual void print () { Std::cout << __function__ << Std::endl; }};typedef BaseClass * (*createbase) (), Static Std::map<long, createbase> _map;class factory{public:static Bas EClass *createinstanse (Long id) {return _map.find (ID)->second (); }};template <typename t>struct classregister:baseclass {classregister (long _id) {_map[_id] = & (Cl Assregister::createt); } static baseclass* Createt () {return new T (); }};class classa:public baseclass{public:static classregister<classa> reg; virtual void print () {std::cout << "ClassA" << Std::endl; }}; Classregister<classa> Classa::reg (1); class Classb:public baseclass{private:static ClassRegister<ClassB > reg;public:virtual void print () {std::cout << "ClassB" << Std::endl; }}; Classregister<classb> Classb::reg (2); int main (int argc, const char * argv[]) {factory::createinstanse (1)-> ;p rint (); Factory::createinstanse (2)->print (); return 0;}
Factory mode, creating the corresponding instance class based on the ID