Supongamos dos clases Gauss y Patterson:
class Gauss {
public:
Gauss() { std::cout << "Object of class Gauss created\n"; }
static void * create() { return (void*) new Gauss; }
}
class Patterson {
public:
Patterson() { std::cout << "Object of class Patterson created\n"; }
static void * create() { return (void*) new Patterson; }
}
Definiremos un nuevo tipo de dato, vacío.
typedef void * (*ptr)();Ahora el ejemplo
int main() {
std::map<std::string, fptr> fpmap;
//Insertamos los pares nombre de clase y tipo de dato de la clase
fpmap.insert(std::make_pair(std::string("Gaus"), Gauss::create));
fpmap.insert(std::make_pair(std::string("Patterson"), Patterson::create));
//Obteniendo un objeto del Tipo Patterson
void * obj = fpmap["Patterson"]();
}
¿Te ha gustado esta entrada? Entonces échame un cable compartiéndola en Twitter. Gracias!

No comments:
Post a Comment