클래스 템플릿// 멤버함수의 외부 선언
2019. 5. 12. 13:12ㆍComputerScience/C-C++
클래스 템플릿(Class template)의 멤버 함수를 외부에 선언할 때 다음과 같이 작성한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//classA.h header file
template<typename T>
class A {
.
.
.
void function(T data){
.
.
}
.
.
}; //클래스 내부 선언
----------------------------------------------------------
template<typename T>
class A {
.
.
.
void function(T);
.
.
};
template<typename T>
void A<T>::function(T data){
.
.
}//외부선언
|
cs |
1
2
3
4
5
6
7
8
9
|
// classA.cpp
#include "classA.h"
template<typename T>
void A<T>::function(T data){
.
.
.
}
|
cs |
하지만 위와 같이 함수 선언을 다른 소스에 작성하게 되면 컴파일시 오류가 발생하게 된다.
이 때 2가지 해결책이 있다. 맨처음과 같이 헤더에 함수를 선언하는 방법. 또 하나는 main 함수가 있는 소스에서
함수가 정의되어있는 cpp파일을 include하는 것이다.
이렇게 되는 이유는 컴파일러가 컴파일시 선언된 타입으로 클래스를 만들고 선언은 외부에 있어 접근할 방법이 없
기 때문이라고 한다.
'ComputerScience > C-C++' 카테고리의 다른 글
[gcc/g++] long double operate error (0) | 2021.10.01 |
---|---|
vector 선언,초기화와 정적 배열 초기화 속도차이 (0) | 2019.09.30 |
자잘한 문법들 (0) | 2019.07.25 |
C++17 Structured binding (0) | 2019.07.25 |
문자열(string)으로 입력받기, 문자열 쪼개기::string stream (0) | 2019.07.09 |