我有两个类,一个是Driver,另一个是FilterOut。在驱动程序中,我有一个名为light的枚举,可以将它作为int正确地传入FilterOut中。作为枚举,我很难弄清楚该如何做。

我的Driver类中的枚举

enum lights{yellow, green, red, blue};


这对我有用。

void FilterOut::LightIn(int light)
  {
       switch(light);
  }


我想做什么。

void FilterOut::LightIn(lights light)
  {
       switch(light);
  }


我尝试过这种方法和几种变体,但是没有运气,有什么想法吗?我还尝试在FilterOut中包含一个与Driver中的枚举相同的枚举,并且现在可以使用

最佳答案

如果枚举在Driver类中,则必须限定其名称:

class FilterOut {
 public:
  void LightIn(Driver::lights light);
};

void FilterOut::LightIn(Driver::lights light)
{
   switch(light);
}


调用函数时,还必须限定查找范围:

FilterOut f;
f.LightIn(Driver::red);

10-01 11:06