2013-03-17 2 views
0

나는 실제로는 int이며, 몇 가지 특별한 능력을 가진 클래스 인 mc_int을 가지고있다. 그것은 operator int() 설정했습니다두 개 이상일 때 선호 연산자 설정

mc_int::operator int() { 
     return value; //int mc_int::value - the real int value of the class 
} 

하지만 cout<<에 클래스를하려고 할 때 오류 얻을 수 있기 때문에, 난 항상 (cout<<(int)mc_int_instance을 int로 클래스를 캐스팅해야합니다,이 수도뿐만 아니라

More than one operator "<<" matches these operands.

클래스도 정의<< 연산자를 가지고, 사실에 의해 발생 될 수있다. 여기에 무엇을?

+0

어떤 연산자를 호출 하시겠습니까? –

+0

어떻게해야합니까? 클래스를 완전히 제거하고 int에서 작동하는 자유 함수로 "특수 능력"을 구현하십시오. –

+0

클래스에 과부하가 걸린 다른 연산자는 무엇입니까? – Etherealone

답변

0

당신이 C++ (11)를 사용하는 경우, 당신은사용할 수있다키워드를 사용하면 명시 적으로 int으로 변환해야합니다. 더 자세한 정보 here :

explicit mc_int::operator int() 

지금 당신은 당신이 정의 << 운영자 방법을 사용해야합니다 사용하고 더 이상 컴파일러에 모호한 없어야합니다. int를 사용하고 싶다면 그냥 캐스팅하거나 그냥 static_cast<int>(the_object)으로 캐스팅하십시오.

관련 문제