저는 템플릿에 익숙하지 않아 어쩌면 사소한 일이지만 어쩔 수 없습니다. 클래스 멤버 함수를 부분적으로 특수화하려고합니다. 가장 짧은 코드는 다음과 같습니다.C++ 템플릿 부분 특수화 멤버 함수
template <typename T, int nValue> class Object{
private:
T m_t;
Object();
public:
Object(T t): m_t(t) {}
T Get() { return m_t; }
Object& Deform(){
m_t*=nValue;
return *this;
}
};
template <typename T>
Object<T,0>& Object<T,0>::Deform(){
this->m_t = -1;
return *this;
}
int main(){
Object<int,7> nObj(1);
nObj.Deform();
std::cout<<nObj.Get();
}
저는 비회원 함수를 사용해 보았는데 정상적으로 작동했습니다. 또한 잘 작동하는 것은 멤버 함수의 완전한 전문화입니다.
하지만 부분 사양으로 시도 할 때마다. 멤버 함수의 I 양식의 오류 :
PartialSpecification_MemberFu.cpp(17): error: template argument
list must match the parameter list Object<T,0>& Object<T,0>::Deform().
당신은 부분적으로 단 하나의 멤버 함수를 전문으로 할 수
관련 항목 : http://stackoverflow.com/questions/1501357/template-specialization-of-particular-members –