我有一个旧的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/

10-09 06:34