1. 문제
7. 다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가?
아래 결과와 같이 출력되도록 프로그램을 수정하라.
2. 결과
3. 코드
#include <iostream>
using namespace std;
class Circle {
int radius;
public:
Circle(int radius = 1) { this->radius = radius; }
int getRadius() { return radius; }
};
template <class T>
T bigger(T a, T b) {
if (a > b) return a;
else return b;
}
Circle bigger(Circle a, Circle b) {
if (a.getRadius() > b.getRadius()) return a;
else return b;
}
int main() {
int a = 20, b = 50, c;
c = bigger(a, b);
cout << "20과 50중 큰 값은 " << c << endl;
Circle waffle(10), pizza(20), y;
y = bigger(waffle, pizza);
cout << "waffle과 pizza 중 큰 것의 반지름은 " << y.getRadius() << endl;
}
4. 설명
처음 20과 50을 비교할 때는 잘 실행되지만, 그 다음 Circlr 클래스 변수를 비교할려면 오류가 발생한다.
그 이유는 클래스 변수를 비교할 수는 없기 때문이다. 그러므로 클래스 변수 안의 있는 비교할 수 있는 멤버 변수 radius를 비교하도록 따로 구현을 해주어야 한다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 10장 9번 (0) | 2019.05.12 |
---|---|
명품 C++ programming 실습문제 10장 8번 (0) | 2019.05.12 |
명품 C++ programming 실습문제 10장 6번 (0) | 2019.05.11 |
명품 C++ programming 실습문제 10장 5번 (1) | 2019.05.11 |
명품 C++ programming 실습문제 10장 4번 (0) | 2019.05.10 |