【问题标题】:C++ Function receiving an enum as one of its parametersC++ 函数接收枚举作为其参数之一
【发布时间】:2011-06-07 05:19:41
【问题描述】:

我试图让一个函数接收一个枚举作为它的参数之一。我将枚举作为全局变量,但由于某种原因,我的其他文件无法更改枚举。所以我想知道如何将枚举设置为函数的参数,例如,

function(enum AnEnum eee);

或者有没有更好的方法来解决上述问题?

好的,快速改写我的问题:我基本上有很多文件,我希望所有文件都可以访问我的枚举并能够更改该枚举的状态以及应该能够访问它的大多数文件正在上课。我试图解决这个问题的方法是将枚举传递给需要访问它的函数,但我不知道如何让函数接收枚举作为其参数之一。

【问题讨论】:

  • 可能值得改写,你的问题不是很清楚。
  • “更改枚举”是什么意思?
  • 用“改变枚举”,你的意思是要扩展它,比如,添加新值?
  • 我的意思是更改存储在其中的值..不添加新值...我不知道这叫什么...

标签: c++ enums


【解决方案1】:

如果您想传递一个值为枚举值之一的变量,则可以这样做:

enum Ex{
  VAL_1 = 0,
  VAL_2,
  VAL_3
};

void foo(Ex e){
  switch(e){
  case VAL_1: ... break;
  case VAL_2: ... break;
  case VAL_3: ... break;
  }
}

int main(){
  foo(VAL_2);
}

如果这不是你的意思,请澄清。

【讨论】:

  • 如何用这个方法访问下一个enum?例如,使用foo(VAL_2+1); 尝试访问VAL_3?
【解决方案2】:
(1) my other files couldn't change the enum

您无法更改 enum 的值,因为它们是 constants。我认为您的意思是更改 enum 变量值。

(2) how do you set an enum as an argument for a function ?

如果您想更改 enum 变量的值,请通过reference

传递它
void function (AnEnum &eee)
{
   eee = NEW_VALUE;
}

【讨论】:

  • 嗯,是的,你错过了理解......对不起我编辑的质量差的问题,我希望它现在更有意义
  • 这个答案相当不令人满意......为什么首先要通过引用传递似乎是全球性的东西?
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
相关资源
最近更新 更多