#include <iostream>
using namespace std;
template <class T> class pair_t {
T value1, value2;
public:
pair_t (T first, T second){
value1=first;
value2=second;
}
T module () {return 0;}
};
template <>
class pair_t <int> {
int value1, value2;
public:
pair_t (int first, int second){
value1=first;
value2=second;
}
int module ();
};
template <>
int pair_t<int>::module() {
return value1%value2;
}
int main () {
pair_t <int> myints (100,75);
pair_t <float> myfloats (100.0,75.0);
cout << myints.module() << '\n';
cout << myfloats.module() << '\n';
return 0;
}
编译失败,
test.cpp:45:18: error: no function template matches function template specialization 'module'
int pair_t<int>::module() {
将特例化的module改成内敛函数后,可以解决,
即在类的内部定义module函数,不在类的外部实现。
int module() {
return value1%value2;
}
但这个也不是根本的解决方式啊,请大牛帮忙解惑。