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 に答える