是否可以将匿名枚举作为函数参数传递?像这样:
class Foo
{
enum
{
One,
Two,
Three
};
};
void Function( /* ??? */ e)
{
switch (e)
{
case Foo::One: // do stuff...
case Foo::Two: // ...
}
}
解决方案尝试:
我试图通过使用auto并检查推断出的类型来确定Foo :: One的类型是什么
auto u = Foo::One;
但是事实证明它是Foo<anonymous enum>
,所以我不能真正在代码中使用它。
答案 0 :(得分:2)
我找到了可能的解决方案。丑陋,但可行:
void Function(decltype(Foo::One) e) {}
答案 1 :(得分:2)
您可以将功能转换为如下功能模板:
template <class Enum> void Function(Enum e)
{
switch (e)
{
case Foo::One: // do stuff...
case Foo::Two: // ...
}
}
可以实例化并通过
调用Function(Foo::One);