模版类的特例化-编译不通过

时间:2021-03-08 18:11:21

#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;

}

但这个也不是根本的解决方式啊,请大牛帮忙解惑。