Страницы

Поиск по вопросам

понедельник, 30 марта 2020 г.

Использование параметра шаблона в качестве параметра шаблона другого класса

#cpp #шаблоны_с++


Есть такой код:  

template< typename T>                                                           
                                                                                  
                                               
class A                                                                         
                                                                                  
                                               
{                                                                               
                                                                                  
                                               
public:                                                                         
                                                                                  
                                               
  typedef std::map::const_iterator Const_iterator;            
                                                                                  
                                               

}; 


g++ 7.3.0 выдает такую ошибку:


main.cpp:8:36: error: template argument 2 is invalid
   typedef std::map::const_iterator Const_iterator;



В чем причина? 
    


Ответы

Ответ 1



Попробуйте typedef typename std::map::const_iterator Const_iterator; Или using Const_iterator = typename std::map::const_iterator; У вас две ошибки - во-первых, typename при вполне объявленном параметре типа T не нужен, а во-вторых, он нужен для указания того, что зависимое имя является типом.

Комментариев нет:

Отправить комментарий