【发布时间】:2014-05-23 17:37:22
【问题描述】:
我有一个旧的 C++ 代码,我有一个函数:
void InitPlace( PLACE_NUMBER place, char* szName,
PLACE_NUMBER pnNumSize, PlacePolicy policy );
当我调用这个函数时:
InitPlace( 0, "", 2, 0 );
我收到一条错误消息:
从 int 到 PlacePolicy 的无效转换
placepolicy 定义如下:
typedef enum {
RANDOM=0,
FIFO=1,
LIFO=2
} PlacePolicy;
你们知道我为什么会出错吗?
【问题讨论】:
-
尝试投射
InitPlace(PLACE_NUMBER(0), "", PLACE_NUMBER(0), PlacePolicy(0)); -
PLACE_NUMBER和PlacePolicy这两个类型有什么关系?也许你应该只通过RANDOM而不是0?或者也许你应该创建像PLACE_NUMBER const RANDOM(0);这样的常量而不是枚举?顺便说一句:通常只对宏使用 ALL_UPPERCASE,请参阅任何好的 C++ 常见问题解答。