在存在两个函数并且都接受枚举作为参数(不同的枚举)的情况下,单个类型的函数指针是否可以引用它们?
enum MyEnum1 {...};
enum MyEnum2 {...};
void blah( MyEnum1 one );
void guff( MyEnum2 two );
void (*pFunc[2]) ( int );
pFunc[0] = blah;
pFunc[1] = guff;
有更好的方法吗?
答案 0 :(得分:3)
不,因为枚举类型不可隐式转换,更不一样的确切类型。您可以通过使函数采用int并将其强制转换为enum并在顶部进行验证,轻松地执行您想要的操作。
答案 1 :(得分:0)
有更好的方法吗?
这实际上取决于你想要通过一个函数获取2种参数来实现的目标。
C ++重载函数支持具有不同参数的相同函数。
#include "stdio.h"
enum Enum1
{
E1_one,
E1_two
};
enum Enum2
{
E2_one,
E2_two
};
class Foo
{
public:
void Bar(Enum1 e1)
{
printf("Function parameter Enum1\n");
}
void Bar(Enum2 e2)
{
printf("Function parameter Enum2\n");
}
};
int main(int argc, char** argv[])
{
Foo foo;
foo.Bar(E1_one);
foo.Bar(E2_two);
return 0;
}