C++ C++;枚举(更好的枚举)和类型之间的映射类型/功能
我正在使用C++ C++;枚举(更好的枚举)和类型之间的映射类型/功能,c++,templates,types,enums,C++,Templates,Types,Enums,我正在使用 在更好的枚举值和更好的枚举类型/功能之间具有1:1映射 比如说 更好的枚举A[a1,a2] 更好的枚举B1 更好的枚举B2 因此,逻辑映射是: A::a1映射到B1类型 A:a2映射到B2类型 显然,上面的示例大小为2,但实际代码必须支持其增长 因此,为了支持此映射,基本上使用了如下switch case,但此代码很难维护和扩展: bool Execute1(A a_val) { switch (a_val) { case A::a1:
在更好的枚举值和更好的枚举类型/功能之间具有1:1映射
比如说
- 更好的枚举A[a1,a2]
- 更好的枚举B1
- 更好的枚举B2
- A::a1映射到B1类型
- A:a2映射到B2类型
因此,为了支持此映射,基本上使用了如下switch case,但此代码很难维护和扩展:
bool Execute1(A a_val)
{
switch (a_val)
{
case A::a1:
return execute1<B1>();
case A::a2:
return execute1<B2>();
default:
break;
}
return false;
}
int Execute2(A a_val)
{
switch (a_val)
{
case A::a1:
return execute2<B1>();
case A::a2:
return execute2<B2>();
default:
break;
}
return 0;
}
bool Execute1(一个值)
{
开关(a_val)
{
案例A::a1:
返回execute1();
案例A::a2:
返回execute1();
违约:
打破
}
返回false;
}
int Execute2(A_val)
{
开关(a_val)
{
案例A::a1:
返回execute2();
案例A::a2:
返回execute2();
违约:
打破
}
返回0;
}
有什么想法可以概括这种映射,并使用一些不需要上述开关/案例的设计模式吗?您如何使用
a1
或a2
?运行时变量或constexpr变量?由用户给定,它不是constexpr,“Execute”方法在被调用时获取任意值。看起来已经有类似的问题了
bool Execute1(A a_val)
{
switch (a_val)
{
case A::a1:
return execute1<B1>();
case A::a2:
return execute1<B2>();
default:
break;
}
return false;
}
int Execute2(A a_val)
{
switch (a_val)
{
case A::a1:
return execute2<B1>();
case A::a2:
return execute2<B2>();
default:
break;
}
return 0;
}