2015-08-18 99 views
2

我有一个函数接受3无符号整数参数func(unsigned int, unsigned int, unsigned int)。虽然调用它,我传递的枚举被初始化为“2”作为第一个参数。得到这个警告Warning[Pe188]: enumerated type mixed with another type。如何纠正它?警告枚举类型与另一种类型混合?

+5

发布[最小完整可验证示例](http://stackoverflow.com/help/mcve)会使这个问题更容易回答。 – user3386109

+1

请提供编码... – Nidhoegger

+1

您确定您没有使用C++编译器吗? – alk

回答

2

这个问题并没有告诉你想要传递什么,但是它看起来像函数需要一个参数的枚举类型,因为它提供了一个整数。请记住enum s是int s是不同的类型。

-1

枚举和int类型是不同的; 在个案>转换枚举通过铸造为int:

public enum EmloyeeRole 
    { 
None = 0, 
Manager = 1, 
Admin = 2, 
Operator = 3 
    } 

    EmloyeeRole role = EmloyeeRole.Manager; 
     int roleInterger = (int)role; 

,然后就可以通过新的INT(roleInteger)到函数func(unsigned int类型,无符号整型,无符号整型)。

祝你好运:)

+1

@Hassan:我试过你的方法,仍然发出警告:( – Rafal

+3

公开?问题标有C. – this

0

如果您使用的是C编译器,你不能改变的应该叫走枚举类型的问题作为参数的函数的定义:

  1. 确保你在这种情况下使用的所有枚举值是>=0
  2. 将传入的变量转换为unsigned int以使编译器无声。
  3. 添加一个解释演员是关于什么的提交。

这并不好。