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