Contoh:
typedef enum Color
{
RED,
GREEN,
BLUE
} Color;
void func(unsigned int& num)
{
num++;
}
int main()
{
Color clr = RED;
func(clr);
return 0;
}
Saya mendapatkan kesalahan berikut ketika saya kompilasi ini:
<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);
^~~
Saya pikir variabel ( clr
) yang saya berikan func(unsigned int&)
adalah lvalue. Saya bisa mendapatkan alamat clr
dan memberikan nilai lain untuk itu. Mengapa itu berubah menjadi nilai ketika saya mencoba meneruskannya func(unsigned int&)
?
@ NathanOliver-ReinstateMonica Menurut pendapat asli saya, saya pikir
—
Koen
typedef enum
ini bukan tipe asli, dan C ++ akan memperlakukannya sebagai unsigned int
tipe.
Pesan kesalahan GCC adalah suboptimal dalam hal ini. Dentang akan memberikan pesan yang kurang membingungkan dengan mencetak jenis asli
—
cpplearner
clr
.
@ cpplearner ya, itu sebabnya saya pikir
—
Koen
enum type
memperlakukan seperti unsigned int
di C ++.
enum X
adalah tipe sendiri, berbeda dariint
enum
aunsigned int
?