다음은 내 코드입니다. 열거 형 데이터 형식 변수를 인쇄하려고합니다. 그 중 하나는 이름과 다른 함수는 원래 변수와 동일한 데이터 형식을 반환합니다. ostream 및 enum 유형으로 오버로드 <<
#include <iostream>
using namespace std;
enum days{SUN, MON, TUE, WED, THU, FRI, SAT};
inline days dayaftertomorrow(days d)
{
return static_cast<days>((static_cast<int>(d) + 2) % 7);
}
ostream& operator<< (ostream& out, days& day)
{
switch(day)
{
case SUN: out << "SUN"; break;
case MON: out << "MON"; break;
case TUE: out << "TUE"; break;
case WED: out << "WED"; break;
case THU: out << "THU"; break;
case FRI: out << "FRI"; break;
case SAT: out << "SAT"; break;
}
return out;
}
int main(int argc, char const *argv[]) {
days d = MON, e;
e = dayaftertomorrow(d);
cout << d << "\t" << e << endl;
cout << d << "\t" << dayaftertomorrow(d) << endl;
return 0;
}
나는
MON WED
MON WED
같은 결과를 기대하지만 난이 문제를 해결 할 방법
MON WED
MON 3
는 무엇입니까? operator<<
비 CONST 참조하여 파라미터 day
중임
사용'열거 클래스 days' :'열거 class'의 사용은 필수 형식으로 암시 적 변환을 억제한다. 당신이 임시 객체와 일치하지 않는로 오버로드 된 연산자를 우회하는 대신 컴파일러의 오류가 발생하는 것이 방법은 (당신이 일을'const를 &를 취할 필요가 것'대신 일 및''의 매개 변수로 : 후자 만에 바인딩 [수정 가능] lvalue. –