c++ - 如何使用 type_info 进行类型转换?

标签 c++ casting rtti

我存储了一个指向 type_info 对象的指针。

int MyVariable = 123;
const std::type_info* Datatype = &typeid(MyVariable);

我如何使用它来将另一个变量类型转换为该类型?我试过这个,但它不起作用:

std::cout << ((*Datatype)3.14) << std::endl;

使用类型转换的函数形式也不起作用:

std::cout << (*Datatype(3.14)) << std::endl;

最佳答案

很简单,您不能使用 type_info 来做到这一点。此外,在您的示例中,DataType 不是类型,它是指向type_info 类型对象的指针。你不能用它来转换。转换需要类型,而不是指针或对象!


在 C++0x 中,您可以这样做,

    int MyVariable = 123;

    cout << (decltype(MyVariable))3.14 << endl;

    cout << static_cast<decltype(MyVariable)>(3.14) << endl;

输出:

3
3

在线演示:http://www.ideone.com/ViM2w

关于c++ - 如何使用 type_info 进行类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972795/

相关文章:

c++ - 将 BCD 字符串转换为十进制

c++ - 将 zlib 与 const 数据一起使用

generics - Typescript 中的通用转换

c++ - 运行时类型信息(为什么这段代码不起作用)

c++ - OpenCV如何在使用单个静态图像时将速度 vector 绘制为箭头

C++冒泡排序动态分配数组

c++ - 将 flex 2.5.4a 迁移到 2.6(词法分析器生成器)

c++ - 多字符持续警告

Delphi 2010 RTTI 和接口(interface)字段

delphi - 使用 Rtti 设置方法字段