1
클래스를 템플릿으로 변환하려고하는데이 클래스는 typename T의 일부 데이터에 액세스해야합니다.이 경우 typename T는 객체 또는 객체에 대한 포인터가 될 수 있습니다. 포인터 또는 객체를 다루는 경우 템플릿 내에서 어떻게 말합니까?클래스를 템플릿으로 변환
부스트를 사용할 수 없습니다.
클래스를 템플릿으로 변환하려고하는데이 클래스는 typename T의 일부 데이터에 액세스해야합니다.이 경우 typename T는 객체 또는 객체에 대한 포인터가 될 수 있습니다. 포인터 또는 객체를 다루는 경우 템플릿 내에서 어떻게 말합니까?클래스를 템플릿으로 변환
부스트를 사용할 수 없습니다.
템플릿 특수화를 사용합니다. 먼저 템플릿 매개 변수를 일반 형식으로 처리하는 템플릿을 만듭니다.
template <typename T>
struct Foo {
T t_;
Foo() { std::cout << "regular version" << std::endl; }
};
그런 다음 유형에 대한 포인터 인 경우 템플릿을 특수화합니다.
template <typename T>
struct Foo<T *> {
T *t_;
Foo() { std::cout << "pointer version" << std::endl; }
};
Foo<int> a;
Foo<int *> b;
흥미로운 점은 일반적으로 동일한 헤더 파일로 이동합니까, 아니면 별개입니까? – Xavier
@Xavier : 대개 같은 헤더 파일에서 볼 수 있습니다. 분리 된 경우 특수 파일에 대해 헤더 파일을 포함해야합니다. – jxh
고마워요! – Xavier