【发布时间】:2014-01-04 21:36:56
【问题描述】:
有没有办法在 C++ 中使用 typeid 或类似于返回类型的东西?
例如:
我在类中有一个私有变量,可以设置为任何类型。我怎么能把它退回来,因为下面没有编译。
#include <type_traits>
typeid(MyVariable) GetValue(){
return MyVariable;
}
【问题讨论】:
-
您是在问如何从函数中返回
typeid(...)表达式的结果? -
std::type_info GetType() { return typeid(MyVariable); }返回类型,然后可能是void GetValue(void *ptr) { *(SomeType *)ptr = MyVariable; }?但这看起来真的太可怕了。这听起来像是一个 XY 问题——你想用这个解决什么问题?也许你只是在寻找简单的多态性?跨度> -
typeid用于当您必须调查类型的错位名称而不是类型推断时,在 C++11 中有decltype和auto只是为了那。此外,如果您的班级能够接受“任何”类型,为什么不直接使用模板类型T作为返回类型? -
@H2CO3 - 感谢您的回答:我不是在寻找任何形式的多态性 - 我只是想看看是否有比我创建的
any类更简单的解决方案。void*会变得非常丑陋,所以我尽量远离他们 :) -
可以在编译时或运行时设置为任意类型吗?