명품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;
}
반응형