【发布时间】:2013-01-23 02:14:13
【问题描述】:
几周前我开始使用模板,但我在使用它时遇到了问题。 我收到了这个错误:
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> > >}' 没有命名类型
编译这段代码时:
“定义.h”:
#include "Kd_tree_patch.h"
[...]
template <class SearchTraits, class Splitter_= CGAL::Sliding_midpoint<SearchTraits>, class UseExtendedNode = CGAL::Tag_true > class Kd_tree_patch; //forward declaration
typedef Kd_tree_patch<Search_traits> Point_set;
typedef Point_set::Node_handle Node_handle;
“Kd_tree_patch.h”:
template <class SearchTraits, class Splitter_=Sliding_midpoint<SearchTraits>, class UseExtendedNode = Tag_true >
class Kd_tree_patch {
[...]
typedef Kd_tree_node<SearchTraits, Splitter, UseExtendedNode > Node;
typedef typename Compact_container<Node>::iterator Node_handle;
};
为什么 Node_handle 还不被视为一种类型?
感谢您的帮助。
【问题讨论】:
-
你缺少
typename那里(它是一个依赖类型)... -
您是几周前开始使用模板的吗?天哪。
-
@NIm 你的意思是:typedef typename Point_set::Node_handle Node_handle;如果是这样,我试过了,但我得到了同样的错误。