명품C++프로그래밍
명품 C++ Programming 실습문제 10장 7번
anycoding
2021. 6. 6. 22:32
반응형
문제
다음 프로그램은 커파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가?
#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;
}
int main()
{
int a = 20, b = 50, c;
c = bigger(a, b);
cout << "20과 50중 큰 값은 " << c << endl;
Circle waffle(10), pizza(50), y;
y = bigger(waffle, pizza);
cout << "waffle과 pizza 중 큰 것은 반지름은 " << y.getRadius() << endl;
}
아래 결과와 같이 출력되도록 프로그램을 수정하라
20과 50중 큰 값은 50
waffle과 pizza 중 큰 것의 반지름은 20
y = bigger(waffle, pizza); 이 부분에서 클래스에 대한 비교가 없기 때문에 오류가 납니다.
소스코드
#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;
}
반응형