【发布时间】:2020-03-30 05:02:10
【问题描述】:
我有一个枚举类,我有一堆非常相似的代码,可以将枚举转换为模板函数调用:
auto func1(Type type, ...params)
{
switch (type)
{
case Type::typeA: return func1<Type::typeA>(params);
case Type::typeB: return func1<Type::typeB>(params);
case Type::typeC: return func1<Type::typeC>(params);
...
}
}
auto func2(Type type, ...params)
{
switch (type)
{
case Type::typeA: return func2<Type::typeA>(params);
case Type::typeB: return func2<Type::typeB>(params);
case Type::typeC: return func2<Type::typeC>(params);
...
}
}
// more such func3, func4, ...
我可以使用#define 宏生成此代码。我可以用模板做任何事情吗?
我可以为每个枚举类型创建一个模板类,每个类都包含所有函数。
但是如何通过名称调用该函数?
【问题讨论】:
-
显示宏解决方案,更清楚您需要什么。还要对您需要的内容进行更多解释。如果显示的代码与您的问题相关,请创建一个干净的 minimal reproducible example 而不是包含多个
...的内容。