我有一个旧的C ++代码,并且有一个函数是:
void InitPlace( PLACE_NUMBER place, char* szName,
PLACE_NUMBER pnNumSize, PlacePolicy policy );
当我使用以下命令调用此函数时:
InitPlace( 0, "", 2, 0 );
我收到一条错误消息,内容为:
从int到PlacePolicy的无效转换
位置政策的定义如下:
typedef enum {
RANDOM=0,
FIFO=1,
LIFO=2
} PlacePolicy;
你们知道我为什么会出错吗?
最佳答案
您必须将int
转换/广播为enum
类型:
InitPlace( 0, "", 2, PlacePolicy(0) );
这假设您肯定该值正确。
但您可能应该这样做:
InitPlace( 0, "", 2, RADNOM );
代替。
另外,
szName
参数是非常量字符点,您正在传递字符串文字。制作const char* szName
。关于c++ - 从int到typedef枚举数据的无效转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23835335/