在C++中不能直接cast成 enum 但在C 中可以
如以下source code 在C中可以COMPILE過
情況類似此篇文章 typdef enum void* 的用法請益
typedef enum {
enum1
enum2,
enum3}
myenum;
void myfunc(void *data)
{
if((myenum)data==enum1)
...
else if ((myenum)data==enum2)
...
else
...
}
但在C++中不行,所以myfunc作了以下修改
void myfunc(void *data)
{
myenum* mydata=(myenum*) data;
if((int)mydata==enum1)
...
else if ((int)mydata==enum2)
...
else
...
}
就可以了
個人覺得關鍵點應該是後面要再把mydata cast 為 int 這樣才不會出現enum 沒有operator = = 的錯誤...
(不然就是要自己寫customer operator了 囧)
也不知道這是不是正確做法,總之亂湊亂兜終於過了~~特此紀錄一下(灑花
沒有留言:
張貼留言