5

我正在创建一个小的“通用”寻路类,它采用将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);

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

4

2 回答 2

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);
于 2012-11-20T14:38:03.080 回答
3

您可以typedef nodeType在类定义中:

typedef typename T::nodeType TNode;
PathFinder<T>::getPath( TNode from, TNode to);
于 2012-11-20T14:37:52.883 回答