Ejemplo:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
Me sale el siguiente error cuando compilo esto:
<source>: In function 'int main()':
<source>:16:9: error: cannot bind non-const lvalue reference of type 'unsigned int&' to an rvalue of type 'unsigned int'
func(clr);
^~~
Creo que la variable ( clr) a la que paso func(unsigned int&)es un valor l. Puedo obtener la dirección de clry puedo asignarle otro valor. ¿Por qué se convierte en un valor r cuando trato de pasarlo func(unsigned int&)?
@ NathanOliver-ReinstateMonica En mi opinión original, creo que
—
Koen
typedef enumno es un tipo nativo, y C ++ lo trataría como un unsigned inttipo de hecho.
El mensaje de error de GCC es subóptimo en este caso. Clang dará un mensaje menos confuso al imprimir el tipo original de
—
cpplearner
clr.
@cpplearner sí, por eso pensé que
—
Koen
enum typees tratar como unsigned inten C ++.
enum Xes su propio tipo, distinto deint
enumaunsigned int?