[英]specialized function of a specialized class
有人可以解释一下,为什么这不是编译...专门的类的专业功能??? 在模板化类的专用版本中,专用函数不编译。
#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
限定符,即使在defintion中也是如此。
这是一个实例 。
我认为你没有使用尾随的const修饰符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.