Digamos que tengo un Handler de clase con algunas subclases como stringhandler, SomeTypeHandler, AnotherTypeHandler. El Handler de clase define un método "handle" como una interfaz común para todas las subclases. La lógica para "manejar" es por supuesto completamente diferente para los diferentes controladores.¿Cómo puedo pasar "Cualquier tipo de datos" a una función en C++
Entonces, lo que tengo que hacer es pasar un valor de cualquier cosa al método de manejo. Las clases específicas pueden lanzar el "cualquier cosa" al tipo que esperan.
Básicamente lo que necesito es algo así como el objeto de clase Java: D
Lo primero que probé fue una void*
, pero al parecer no se puede hacer B* someB = dynamic_cast<B*>(theVoidPointer)
, por lo que no hay suerte.
Mi segunda idea fue utilizar boost::any
. sin embargo, el requisito de usar boost :: any es que el valor debe ser copiable como cunstructable, que no es el caso para mis datos.
¿Alguna idea para que esto funcione?
Gracias
EDIT: Tenga en cuenta que sé que podría utilizar una clase somedata sin miembros en absoluto, y que mis datos sean subclases de eso, pero estoy en busca de un enfoque más genérico que no requiere de mí para hacer mi propia clase de contenedor.
¿Estás seguro de que necesitas 'dynamic_cast', y no puedes usar' reinterpret_cast'? –
¿Qué le parece usar plantillas? –
Parece que la mayoría de sus opciones se describen aquí: http://stackoverflow.com/questions/913505/casting-void-pointers-depending-on-data-c – briantyler