Тип, определенный в классе шаблона "не называет тип"

Я начал использовать шаблоны несколько недель назад, и у меня проблемы с этим. Я получил эту ошибку:

Freestyle/_gl/../_convection_selective/Definitions.h:153:9: error: ‘Node_handle’ in ‘Point_set {aka struct Kd_tree_patch > >*, My_point_property_map, CGAL::Search_traits > >, const double*, Construct_coord_iterator> > >}’ does not name a type

при компиляции этого кода:

<Сильный> "Definitions.h":

#include "Kd_tree_patch.h"
[...]
template , class UseExtendedNode = CGAL::Tag_true > class Kd_tree_patch;  //forward declaration

typedef Kd_tree_patch Point_set;    
typedef Point_set::Node_handle Node_handle;

"Kd_tree_patch.h":

template , class UseExtendedNode = Tag_true >
class Kd_tree_patch {
[...]
typedef Kd_tree_node Node;
typedef typename Compact_container::iterator Node_handle;
};

Почему Node_handle еще не считается типом?

Спасибо за вашу помощь.

0
nl ja de
@NIm Вы хотите сказать, что typedef typename Point_set :: Node_handle Node_handle; Если это так, я попробовал это, но у меня такая же ошибка.
добавлено автор Kamouth, источник
вам не хватает typename (это зависимый тип) ...
добавлено автор Nim, источник
Вы начали использовать шаблоны несколько недель назад? Вот это да.
добавлено автор Salgar, источник

1 ответы

Вы не можете перенаправлять объявления вложенных типов, что означает, что для использования вложенного типа Node_handle шаблон Kd_tree_patch должен быть определен до typedef , После того, как вы исправите это, вам также необходимо проинструктировать компилятор, что это тип с помощью typename :

typedef typename Point_set::Node_handle Node_handle;
//      ^^^^^^^^
2
добавлено
Спасибо за вашу помощь !
добавлено автор Kamouth, источник
+1 Я пропустил бит форвардной декларации ...
добавлено автор Nim, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest