2016-05-22 3 views
1

У меня есть следующая структура классов (в C++):Missing спецификатор типа по реализации виртуальной функции

template<T> 
class A { 
    class B { 
     class C_Base { 
      virtual int foo(const T &a, const T &b) = 0; 
     }; 

     template<U> 
     class C final : public C_Base { 
      const U &x; 
      virtual int foo(const T &a, const T &b) { 
       return x(a, b); 
      } 
     }; 
    }; 
}; 

Однако MSVC дает мне ошибку missing type specifier - int assumed. Note: C++ does not support default-int. по определению foo внутри C. Почему это и как его можно исправить?

+1

Вы что-то делаете. Пытаться скомпилировать этот код немедленно сработает в самой первой строке: 'template '. Исправление этих ошибок делает его компиляцией в MSVC без каких-либо проблем. – AnT

ответ

4

Вы забыли ключевое слово typename.

template<typename T> 
//-------^^^^^^^^ 
+0

Какой долгий день это было ... спасибо, я не могу поверить, что забыл что-то вроде этого ... –