juaninf - notas de psudoprogramador

Sunday, February 24, 2013

Solución para String como Nombre de Clase en C++ [code]

El problema es como usar una variable de tipo string (char*)  de tal forma que podamos crear instancias de una clase que tenga el nombre de la variable string. Aqui les presento una solución:

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:

Related Posts Plugin for WordPress, Blogger...