Template (2) 클래스 템플릿
제공되는 기능과 내부의 행동이 모두 동일한 클래스 라면..
예를 들어
class Point
{
private:
int xpos, ypos;
public:
Point(int x=0, int y=0) : xpos(x), ypos(y)
{}
void ShowPosition() const
{
cout << xpos << " " << ypos << endl;
}
};
단순히 정수로 표현되는 클래스가 있다고 해보자..그런데 실수입력도 필요하다면..? 또 정의해야하나?
template<typename T>
class Point
{
private:
T xpos, T ypos;
public:
Point(int x=0, int y=0) : xpos(x), ypos(y)
{}
void ShowPosition() const
{
cout << xpos << " " << ypos << endl;
}
};
이런식으로 클래스 템플릿을 만든다.. 물론. 함수 템플릿과 똑같다.
객체를 생성할때는..
Point<int>pos1(3,5);
Point<char>pos2('C','T');
이런식으로 하며 반드시 자료형을 써야한다. <int> 같은..
안하게 되면 클래스 템플릿을(를) 사용하려면 템플릿 인수 목록이 있어야 합니다. 라는..오류가 발생된다.
클래스의 멤버함수를 외부에서 정의하려면.(위에 Showposition함수)
template<typename T>
void Point<T>::ShowPosition() const
{ }
이런식으로 한다..typename T를 해주고..
클래스 뒤에<T>를 해준다. T에 대해 템플릿화된 Point 클래스 템플릿..Point<T>
2. 템플릿 클래스의 선언과 정의를 각각 헤더파일과 소스파일에 구분하여 작성 후 컴파일 시 에러가 발생된다.
해결방법으로는..
메인 소스파일에 #include "템플릿 클래스.cpp"를 하거나..
템플릿 클래스.헤더파일에 함수의 정의를 모두 넣거나..
아님 안하거나..??? :p