C++/Templates
2021. 3. 22. 00:05
포인터 템플릿 특수화(Pointer Templates Specialization)
- 템플릿 파라미터가 포인터인 경우 특수화를 하고 싶다면 클래스명에
<T*>
를 붙여서 작성한다.
예제
#include <iostream>
using namespace std;
template <typename T>
class A
{
T value_;
public:
A(const T & input)
: value_(input)
{}
void print()
{
cout << value_ << endl;
}
};
template <typename T>
class A<T*>
{
T* value_;
public:
A(T* input)
: value_(input)
{}
void print()
{
cout << *value_ << endl;
}
};
int main()
{
A<int> a_int(123);
a_int.print();
int tmp = 456;
A<int*> a_int_ptr(&tmp);
a_int_ptr.print();
double tmp_d = 3.141592;
A<double*> a_double_ptr(&tmp_d);
a_double_ptr.print();
}
/* stdout
123
456
3.14159
*/
'C++ > Templates' 카테고리의 다른 글
C++ 멤버 함수를 한 번 더 템플릿화하기 (0) | 2021.03.22 |
---|---|
C++ 템플릿 부분 특수화 (Templates Partial Specialization) (0) | 2021.03.22 |
C++ 클래스 템플릿 특수화 (Class Templates Specialization) (0) | 2021.03.22 |
C++ 함수 템플릿 특수화 (Function Templates Specialization) (0) | 2021.03.22 |
C++ 자료형이 아닌 템플릿 매개변수 (Non-type Templates Parameters) (0) | 2021.03.21 |