定义和调用C++;专用模板的功能 我现在正在学习C++,我遇到过一些问题,现在已经困扰了几个小时。strong>为什么当我制作一个模板并对其进行专门化时,我不能为专门化版本调用或定义该函数?编译器抱怨,我已经搜索了谷歌,寻找可能的提示,说明
定义和调用C++;专用模板的功能 <>我现在正在学习C++,我遇到过一些问题,现在已经困扰了几个小时。strong>为什么当我制作一个模板并对其进行专门化时,我不能为专门化版本调用或定义该函数?编译器抱怨,我已经搜索了谷歌,寻找可能的提示,说明我做错了什么,但没有用。我非常确定,我忽略了一件非常简单的事情:定义和调用C++;专用模板的功能 我现在正在学习C++,我遇到过一些问题,现在已经困扰了几个小时。strong>为什么当我制作一个模板并对其进行专门化时,我不能为专门化版本调用或定义该函数?编译器抱怨,我已经搜索了谷歌,寻找可能的提示,说明,c++,templates,compiler-errors,template-specialization,C++,Templates,Compiler Errors,Template Specialization,定义和调用C++;专用模板的功能 我现在正在学习C++,我遇到过一些问题,现在已经困扰了几个小时。strong>为什么当我制作一个模板并对其进行专门化时,我不能为专门化版本调用或定义该函数?编译器抱怨,我已经搜索了谷歌,寻找可能的提示,说明我做错了什么,但没有用。我非常确定,我忽略了一件非常简单的事情: template <typename T> class C { }; //specialization to type char template <>
template <typename T>
class C { };
//specialization to type char
template <>
class C <char>
{
public:
void echo();
};
//compiler complains here
template <>
void C <char> :: echo()
{
cout << "HERE" << endl;
}
模板
C类{};
//字符类型的专门化
模板
C类
{
公众:
空洞回声();
};
//编译器在这里抱怨
模板
void C::echo()
{
cout//专门化为char类型
模板
C类
{
公众:
空洞回声();
};
//模板可能重复谢谢@Rob!最后一个问题,为什么函数“echo()”不需要模板说明符?@jrd1,因为echo()
本身不是模板
函数。它是模板类
的成员方法。
//specialization to type char
template <>
class C <char>
{
public:
void echo();
};
//template<> <----- don't need to mention template<> here
void C <char> :: echo()
{
cout << "HERE\n";
}