He almacenado un puntero a un objeto type_info
.¿Cómo puedo encasillar con type_info?
int MyVariable = 123;
const std::type_info* Datatype = &typeid(MyVariable);
¿Cómo podría usar esto para escribir otra variable a ese tipo? He intentado esto, pero no funciona:
std::cout << ((*Datatype)3.14) << std::endl;
Utilizando el formulario en función de encasillamiento no funciona, ya sea:
std::cout << (*Datatype(3.14)) << std::endl;
Si utiliza un estilo C o reinterpret_cast obtienes el mismo problema, así que no creo que sea un argumento válido. –
@Mark Ransom El resultado de cualquiera de esos tipos de conversión es * conocido en tiempo de compilación *. El contenido de '* DataType' puede variar en tiempo de ejecución. –
en ese punto, creo que estamos de acuerdo y lo dije en mi respuesta. Donde estoy en desacuerdo es que el problema de perder la verificación de tipo sería una razón para que esto no funcione. Si lanzas un 'foo *' a una 'barra * 'y llamas un método sobre él, puedes invocar una llamada a función que en realidad no existe, hoy, usando los moldes que mencioné. –