我有一个模板,我想用适当的对象类型调用,而不必解析字符串标识符/ 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 ++中一定是可行的......
答案 0 :(得分:0)
您可以重新定义templateFunction
以获取虚拟参数吗?
template <typename T>
void templateFunction(const T& Dummy)
{
// Do nothing with Dummy
}
这样做只需要传递变量varType
即可调用函数:
templateFunction(varType);