2011-06-07 20 views
5

Estoy tratando de hacer que una función reciba una enumeración como uno de sus parámetros. Tenía la enumeración como global, pero por alguna razón mis otros archivos no podían cambiar la enumeración. así que me preguntaba ¿Cómo se establece una enumeración como un argumento para una función similar,C++ Función que recibe una enumeración como uno de sus parámetros

function(enum AnEnum eee); 

o hay una mejor manera de resolver el problema anterior?

Bien, una reformulación rápida de mi pregunta: Básicamente tengo numerosos archivos y quiero que todos ellos tengan acceso a mi enumeración y puedan cambiar el estado de esa enumeración también la mayoría de los archivos que deberían poder acceder está en una clase. La forma en que estaba tratando de arreglar esto fue pasando la enumeración a la función que necesitaba para acceder a ella, no pude encontrar la manera de hacer que una función reciba una enumeración como uno de sus argumentos.

+0

Podría valer la pena reformulación, su pregunta no está muy claro. – Bruce

+0

¿Qué quiere decir con "cambiar la enumeración"? – trutheality

+0

Con "cambiar la enumeración", ¿quiere decir que desea expandirla, como agregar nuevos valores? – Xeo

Respuesta

9

Si desea pasar una variable que tiene un valor de uno de los valores enumeraciones, esto va a hacer:

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

Si eso no es lo que quiere decir, por favor aclarar.

0
(1) my other files couldn't change the enum 

No se puede cambiar enum valor, ya que son constants. Creo que quisiste cambiar el valor de la variable enum.

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

Si desea cambio a continuación, pasar el valor de la variable enum por referencia

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

hmm, sí señorita entendida ... perdón por la mala calidad de la pregunta que he editado y Espero que tenga más sentido ahora –

+0

Esta respuesta es bastante inestable ... ¿por qué pasar algo por referencia que parece ser global en primer lugar? – clockw0rk

Cuestiones relacionadas