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 clr
y 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 enum
no es un tipo nativo, y C ++ lo trataría como un unsigned int
tipo 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 type
es tratar como unsigned int
en C ++.
enum X
es su propio tipo, distinto deint
enum
aunsigned int
?