使用字符串声明变量类型

时间:2012-02-29 17:27:56

标签: c++ types declaration rtti

我有一个模板,我想用适当的对象类型调用,而不必解析字符串标识符/ enum / typeid.name()等。

即,而不是:

switch(varType)
{
case TYPE_ONE:
    templateFunction<TYPE_ONE>();
    break;

case TYPE_TWO:
    templateFunction<TYPE_TWO>();
    break;
...
etc...
}

我更愿意使用:

templateFunction<GetTypeFromEnum(MyEnum::INT)>();

或更好:

templateFunction<GetTypeFromString("int")>();

像反转类型的东西?

我实际上曾经在VBA中设法做过一次,所以我想它在C ++中一定是可行的......

1 个答案:

答案 0 :(得分:0)

您可以重新定义templateFunction以获取虚拟参数吗?

template <typename T>
void templateFunction(const T& Dummy)
{
  // Do nothing with Dummy
}

这样做只需要传递变量varType即可调用函数:

templateFunction(varType);