-
Template (2) 클래스 템플릿@ 16. 1 ~ 17. 1/C++ 2013. 1. 29. 19:53
제공되는 기능과 내부의 행동이 모두 동일한 클래스 라면..
예를 들어
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
'@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글
포인터(1) (0) 2013.01.29 Template (3) 클래스 템플릿 특수화 (0) 2013.01.29 Template (1) 함수 템플릿 (0) 2013.01.29 비트연산자, 함수포인터, ctime (0) 2013.01.27 잊기전 정리.. (1) 2013.01.17