문제 :
문제 7을 푸는 다른 방법을 소개한다.
bigger() 함수의 다음 라인에서 > 연산자 때문에
| 1 | if(a > b) return a; |
T에 Circle과 같은 클래스 타입이 대입되면, 구체화가 실패하여 컴파일 오류가 발생한다.
이 문제를 해결하기 위해 다음과 같은 추상 클래스 Comparable을 제안한다.
| 1 2 3 4 5 6 | class Comparable { public: virtual bool operator > (Comparable& op2) = 0; // 순수 가상 함수 virtual bool operator < (Comparable& op2) = 0; // 순수 가상 함수 virtual bool operator == (Comparable& op2) = 0; // 순수 가상 함수 }; |
Circle 클래스가 Comparable을 상속받아 순수 가상 함수를 모두 구현하면, 앞의 bigger() 템플릿 함수를 사용하는데 아무 문제가 없다.
Circle뿐 아니라, Comparable을 상속받은 모든 클래스를 bigger()에 사용할 수 있다.
Comparable을 상속받은 Circle 클래스를 완성하고 문제 7의 main()을 실행하여 테스트 하라.
2020/03/09 - [C++/명품 C++ programming] - 명품 C++ programming 실습 문제 10장 7번
[명품 C++ programming 실습 문제 10장 7번
문제 : 다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; cl..
sobamemil.tistory.com](https://sobamemil.tistory.com/117)
실행 결과 :

목적 및 힌트 :
템플릿 함수 작성시 상속과 연산자 중복의 필요성 이해
코드 :
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include |
공유하기
게시글 관리
코딩은 내일부터 ;
‘💻 개발 & CS > C++ 프로그래밍’ 카테고리의 다른 글
| 명품 C++ programming 실습 문제 10장 10번 (1) | 2020.03.10 |
| 명품 C++ programming 실습 문제 10장 9번 (1) | 2020.03.10 |
| 명품 C++ programming 실습 문제 10장 7번 (1) | 2020.03.09 |
| 명품 C++ programming 실습 문제 10장 6번 (1) | 2020.03.09 |
| 명품 C++ programming 실습 문제 10장 5번 (1) | 2020.03.09 |