有人可以解释一下,为什么这不是编译...专门课程的专业功能??? 在模板化类的专用版本中,专用函数不编译。
#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;
}
答案 0 :(得分:3)
类模板的显式特化是一个具体的类,而不是模板,所以你可以(或者更应该)只写:
// 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。
答案 1 :(得分:1)
我认为你没有使用尾随的const修饰符