How do I typecast with type_info?

前端 未结 3 1807
暗喜
暗喜 2020-12-31 10:45

I\'ve stored a pointer to a type_info object.

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

相关标签:
3条回答
  • 2020-12-31 11:26

    Typecasting isn't a run-time process, it's a compile-time process at least for the type you're casting to. I don't think it can be done.

    0 讨论(0)
  • 2020-12-31 11:37

    I don't think such casting can be done. Suppose you could do "dynamic" casting like this at runtime (not to mean dynamic_cast). Then if you used the result of the cast to call a function the compiler could no longer do type checking on the parameters and you could invoke a function call that doesn't actually exist.

    Therefore it's not possible for this to work.

    0 讨论(0)
  • 2020-12-31 11:40

    Simply you cannot do that using type_info. Also, in your example DataType is not a type, it's a pointer to an object of type type_info. You cannot use it to cast. Casting requires type, not pointer or object!


    In C++0x, you can do this however,

        int MyVariable = 123;
    
        cout << (decltype(MyVariable))3.14 << endl;
    
        cout << static_cast<decltype(MyVariable)>(3.14) << endl;
    

    Output:

    3
    3
    

    Online Demo: http://www.ideone.com/ViM2w

    0 讨论(0)
提交回复
热议问题