2013-04-18 171 views
0

我想要专门化这个模板方法'他',但无法编译。如何做到这一点?C++模板类的模板专门化

#pragma once 
      template<typename A, typename B> 
      class template_test 
      { 
      public: 
       template_test(); 
       ~template_test(); 

       template<typename C> 
       void he(C gg); 

      }; 



      template<typename A, typename B> 
      template<typename C> 
      void template_test<A, B>::he(C gg) 
      { 

      } 

      template<typename A, typename B> 
      template<> 
      void template_test<A, B>::he(int gg) 
      { 

      } 

错误C1506:无法恢复的块作用域的错误
无法函数定义匹配现有的声明

+5

注:发帖时“为什么不是我的代码编译?”问题时,通常会发布编译器错误输出** verbtim **,并且您可能会一直*要求它(如现在)。这不是一种重载方法,而是一种专业化。 (除非我完全误解你的意图)。 – WhozCraig 2013-04-18 03:22:16

回答

3

你有专门的类也。你不能只专注只有成员:

template<> 
template<> 
void template_test<int, int>::he<int>(int gg) 
{ 

} 

但是,相反,我只想补充过载:

void he(int gg){} 
+0

我明白了。非常感谢你。 – 2013-04-18 03:27:46

+0

+1同意增加超载而不是试图专门化这个。 – WhozCraig 2013-04-18 03:32:18