#include <iostream>
#include <string>
using namespace std;
class Employee {};
class A: public Employee {};
class B: public Employee {};
class C: public Employee {};
typedef Employee *makeEmployee();
struct { string code; makeEmployee *maker; } Tb[]=
{
{"A",[]()->Employee*{ return new A(); }},
{"B",[]()->Employee*{ return new B(); }},
{"C",[]()->Employee*{ return new C(); }},
};
int main()
{
Employee *obj=nullptr;
string code="A";
for(auto p:Tb) if(p.code==code) obj=p.maker();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRW1wbG95ZWUge307CmNsYXNzIEE6IHB1YmxpYyBFbXBsb3llZSB7fTsKY2xhc3MgQjogcHVibGljIEVtcGxveWVlIHt9OwpjbGFzcyBDOiBwdWJsaWMgRW1wbG95ZWUge307CnR5cGVkZWYgRW1wbG95ZWUgKm1ha2VFbXBsb3llZSgpOwoKc3RydWN0IHsgc3RyaW5nIGNvZGU7IG1ha2VFbXBsb3llZSAqbWFrZXI7IH0gVGJbXT0gCiB7CiAgICB7IkEiLFtdKCktPkVtcGxveWVlKnsgcmV0dXJuIG5ldyBBKCk7IH19LAogICAgeyJCIixbXSgpLT5FbXBsb3llZSp7IHJldHVybiBuZXcgQigpOyB9fSwKICAgIHsiQyIsW10oKS0+RW1wbG95ZWUqeyByZXR1cm4gbmV3IEMoKTsgfX0sCiB9OwoKaW50IG1haW4oKQogIHsKICAgRW1wbG95ZWUgKm9iaj1udWxscHRyOwogICBzdHJpbmcgY29kZT0iQSI7CiAgIGZvcihhdXRvIHA6VGIpIGlmKHAuY29kZT09Y29kZSkgb2JqPXAubWFrZXIoKTsKICAgcmV0dXJuIDA7CiAgfQ==