获取模板,模板类型

时间:2012-11-20 14:34:16

标签: c++ class templates types

我正在创建一个小的“通用”路径寻找类,它采用类Board,它将在其上找到路径,

//T - Board class type
template<class T>
class PathFinder
{...}

Board也模板化以保存节点类型。 (这样我就可以在2D或3D矢量空间上找到路径了。)

我希望能够声明和定义PathFinder的成员函数,它将采用这样的参数

//T - Board class type
PathFinder<T>::getPath( nodeType from, nodeType to);

如何为作为参数输入函数的TnodeType节点类型执行类型兼容性?

2 个答案:

答案 0 :(得分:6)

如果我理解你想要的,请给board一个类型成员并使用它:

template<class nodeType>
class board {
  public:
    typedef nodeType node_type;
  // ...
};

PathFinder<T>::getPath(typename T::node_type from, typename T::node_type to);

如果您无法更改board

,也可以将其匹配
template<class Board>
struct get_node_type;
template<class T>
struct get_node_type<board<T> > {
  typedef T type;
};

PathFinder<T>::getPath(typename get_node_type<T>::type from, typename get_node_type<T>::type to);

答案 1 :(得分:3)

您可以在课程定义中typedef nodeType

typedef typename T::nodeType TNode;
PathFinder<T>::getPath( TNode from, TNode to);