.h
class TestTemplateFunc
{
public:
template<typename T>
inline void setParam(const T& t);
};
.cpp
#include "TestTemplateFunc.h"
#include<iostream>
template<typename T>
void TestTemplateFunc::setParam(const T& t) {
std::cout << " setParam T" << std::endl;
}
template<>
void TestTemplateFunc::setParam<double>(const double& t) {
std::cout << "set Param double" << std::endl;
}
// 显式实例化模板
template void TestTemplateFunc::setParam<int>(const int& t); // 显式实例化 double 类型
main.cpp
int main() {
TestTemplateFunc func;
func.setParam<int>(2); //通用模版
func.setParam<double>(4.23); //模版特化
return 0;
}
result:
tips:
向这种成员函数模版,可以用函数重载去替代实现。