2011-06-07 145 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