如何专门化模板 class 成员函数?
How can I specialize a template class member function?
考虑以下示例:
template <class T, class U>
class Test {
public:
void f(){std::cout<<"f() not specized"<<std::endl;}
void g(){std::cout<<"g() not specized"<<std::endl;}
void h(){std::cout<<"h() not specized"<<std::endl;}
//void g<long, double>(){}
};
我这里注释的代码有错误。
我想达到预期结果的唯一方法是将整个 class 空间化。但是在下面提到的 class 中,我不能使用我原来 class 的默认行为(例如 f() 和 h() 函数)。
template <>
class Test<long, double> {
public:
void f(){std::cout<<"f() specized long, double"<<std::endl;}
};
那么有没有办法将原函数空间化class??
当然可以 do it with a definition:
template<>
void Test<long, double>::f(){std::cout<<"f() specialized long, double"<<std::endl;}
考虑以下示例:
template <class T, class U>
class Test {
public:
void f(){std::cout<<"f() not specized"<<std::endl;}
void g(){std::cout<<"g() not specized"<<std::endl;}
void h(){std::cout<<"h() not specized"<<std::endl;}
//void g<long, double>(){}
};
我这里注释的代码有错误。 我想达到预期结果的唯一方法是将整个 class 空间化。但是在下面提到的 class 中,我不能使用我原来 class 的默认行为(例如 f() 和 h() 函数)。
template <>
class Test<long, double> {
public:
void f(){std::cout<<"f() specized long, double"<<std::endl;}
};
那么有没有办法将原函数空间化class??
当然可以 do it with a definition:
template<>
void Test<long, double>::f(){std::cout<<"f() specialized long, double"<<std::endl;}