evidentemente non ho compreso bene il problema. La soluzione di shodan non va bene? una cosa del genere:
codice:
CObject* Factory::CreateObject(const serializedObj& obj) {
    string objType = obj.getType();
    CObject* ret;
    // RTTI
   // creatorMap<string, CObject* (*create)()>
    ret = CObject::creatorMap.find(objType).create();
    ret->fromSerializedObj(obj);
    return ret;
}