분수 클래스에 대해 instream 연산자와 오버로드하려고합니다. 사용자로부터 문자열을 받아서 Fraction 클래스의 적절한 인수로 파싱 할 수있는 함수를 만들었지 만, >> >> 오버로드 함수에서이를 구현하는 방법을 잘 모르겠습니다. 분획의 세 가지 유형이있다분수 클래스에 대한 과부하 >> C++
그 사용자를 입력 할 수있다 : 1. 정수 (예 5) 2. 혼합 수 (예 : 2 + 5/5) 3. 일반 분획 (예, 1/2)
내 접근 방식은이 입력을 main 함수의 사용자로부터 문자열로 받아 들여 유효한 Fraction 클래스 매개 변수를 얻기 위해 구문 분석 한 다음 새로 생성 된 소수 개체를 스트림으로 반환하는 것이 었습니다. 나는 이것을하는 방법을 모르겠다. 내 연산자 오버로딩의 정의에서
,이 있습니다
istream& operator>>(istream& in,const Fraction& input)
을하지만 문자열을 수용하고있어, 여기 매개 변수의 유형은 문자열이어야하지 않겠습니까? 나는 그 부분에 대해 매우 혼란스러워하고있다. 그런 다음 Fraction 객체를 반환하고 싶습니다. 다음은 정수 처리의 예입니다.
int num1 = atoi(input.c_str());
Fraction output(num1);
in >> output;
return in;
여기 올바른 길에 있습니까?
'istream & operator >> (istream & in, const Fraction & input)'매우 이상한 서명. 당신은 정말로 출력이 변경 될 수없는 것에 출력을 의미합니까? –