Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
定义和调用C++;专用模板的功能 我现在正在学习C++,我遇到过一些问题,现在已经困扰了几个小时。strong>为什么当我制作一个模板并对其进行专门化时,我不能为专门化版本调用或定义该函数?编译器抱怨,我已经搜索了谷歌,寻找可能的提示,说明_C++_Templates_Compiler Errors_Template Specialization - Fatal编程技术网

定义和调用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 <>

定义和调用C++;专用模板的功能 <>我现在正在学习C++,我遇到过一些问题,现在已经困扰了几个小时。strong>为什么当我制作一个模板并对其进行专门化时,我不能为专门化版本调用或定义该函数?编译器抱怨,我已经搜索了谷歌,寻找可能的提示,说明我做错了什么,但没有用。我非常确定,我忽略了一件非常简单的事情:

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";
}