문제 :
다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가?
| 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 |
실행 결과 :

목적 및 힌트 :
템플릿 함수의 구체화의 실패 이해
코드 :
| 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 | #include |
설명 :
전체 코드 28번 줄에 있는 y = bigger(waffle, pizza);를 호출 시에 19번 줄에 있는 if(a>b) return a; 부분에서 오류가 발생합니다.
Circle과 같은 클래스는 > 연산자가 구현되어 있지 않기 때문에 구체화에 실패하기 때문입니다.
따라서 Circle 타입의 중복 함수를 작성하여 주면 bigger(waffle, pizza); 호출 시 템플릿 함수보다 중복 함수가 우선이기 때문에 템플릿 함수가 아닌 Circle 객체를 리턴하는 중복 함수가 호출됩니다.
공유하기
게시글 관리
코딩은 내일부터 ;
‘💻 개발 & CS > C++ 프로그래밍’ 카테고리의 다른 글
| 명품 C++ programming 실습 문제 10장 9번 (1) | 2020.03.10 |
| 명품 C++ programming 실습 문제 10장 8번 (4) | 2020.03.09 |
| 명품 C++ programming 실습 문제 10장 6번 (1) | 2020.03.09 |
| 명품 C++ programming 실습 문제 10장 5번 (1) | 2020.03.09 |
| 명품 C++ programming 실습 문제 10장 4번 (1) | 2020.03.09 |