2011-06-07 141 views
5

我想让一个函数接收一个枚举作为其参数之一。我把枚举作为全局的,但由于某种原因,我的其他文件无法改变枚举。所以我想知道你是怎么设置的枚举作为一个功能类似的说法,C++函数接收枚举作为其参数之一

function(enum AnEnum eee); 

或是否有更好的方法来解决上述问题?

好吧,我的问题很快就改变了:我基本上有很多文件,我希望他们都能访问我的枚举,并且能够更改该枚举的状态以及应该能够访问的大多数文件它在一个班级。我试图解决这个问题的方式是将enum传递给需要访问它的函数,但我无法弄清楚如何使函数接收枚举作为它的一个参数。

+0

通过它可能是值得改写,你的问题不是很清楚。 – Bruce 2011-06-07 05:24:07

+0

“改变枚举”是什么意思? – trutheality 2011-06-07 05:42:00

+0

随着“改变枚举”,你的意思是你想扩大它,就像增加新的值? – Xeo 2011-06-07 05:45:19

回答

9

如果你想传递一个具有枚举值之一的值的变量,这将做到:

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); 
} 

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

0
(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变量的值,然后通过参考

void function (AnEnum &eee) 
{ 
    eee = NEW_VALUE; 
} 
+0

嗯是的,你有错过理解...抱歉关于质量差的问题,我编辑它和我希望它现在更有意义 – 2011-06-07 05:33:09

+0

这个答案是相当不明确的......为什么通过引用似乎是全球性的参考传递? – clockw0rk 2018-01-28 19:27:00