2016-06-07 2 views
0

У меня есть вложенный класс внутри класса шаблона и вы хотите реализовать его конструктор вне области видимости. Однако, я получаю следующее сообщение об ошибке:Конструктор вложенных классов шаблонов Классы в C++

expected unqualified-id before ')' token

template<class T> 
class mainClass { 
private: 
    class nestedClass { 
    public: 
     nestedClass(); 
    }; 
}; 

template<class T> 
typename mainClass<T>::nestedClass::nestedClass(){ 
    // code here 
} 
+0

Удалите 'typename'. – LogicStuff

ответ

0

Удалить typename:

template<class T> 
mainClass<T>::nestedClass::nestedClass(){ 
    // code here 
} 

Live Demo

Для получения дополнительной информации о, в которых контексты мы должны использовать typename см here.

+0

Не работает. Я думаю, что это должно иметь имя для компилятора, чтобы понять, что nestedClass - это тип, а не что-то еще (например, статическая переменная или функция). –

+0

@GuyWaldman Нет в этом контексте вам не нужно 'typename'. – 101010

0

Кажется, моя проблема связана с другой ошибкой, которую я не заметил до сих пор. В любом случае, верно, что typename не требуется в том контексте, в котором он использовался.

спасибо.

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