2013-04-18 3 views
0

Я пытаюсь специализировать этот метод шаблона 'he', но не смог скомпилировать. Как это сделать правильно?Специализация шаблона класса шаблона 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

ответ

3

Вы должны специализироваться класс также. Вы не можете просто специализироваться только член:

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

} 

Однако, вместо этого, я бы просто добавить перегрузки:

void he(int gg){} 
+0

я вижу. Большое спасибо. –

+0

+1 также согласился с добавлением перегрузки, а не пытается специализироваться на этом. – WhozCraig

Смежные вопросы