有人可以解释一下为什么为什么不编译...专业类的专业功能吗?
在模板化类的专用版本中,专用功能未编译。
#include<iostream>
using namespace std;
//Default template class
template<typename T>
class X
{
public:
void func(T t) const;
};
template<typename T>
void X<T>::func(T b) const
{
cout << endl << "Default Version" << endl;
}
//Specialized version
template<>
class X<int>
{
public:
void func(int y) const;
};
template<>
void X<int>::func(int y)
{
cout << endl << "Int Version" << endl;
}
int main()
{
return 0;
}
最佳答案
类模板的显式专门化是具体的类,而不是模板,因此您可以(或更应该)只写:
// template<>
// ^^^^^^^^^^
// You should not write this
void X<int>::func(int y) const
// ^^^^^
// And do not forget this!
{
cout << endl << "Int Version" << endl;
}
因此省略了
template<>
部分。另外,请注意,您的
func()
函数在声明中是const
限定的-因此,即使在定义中,也必须使用const
限定词。这是一个live example。