Я создаю небольшой «общий» класс поиска пути, который принимает тип класса 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
что подается в функцию как параметр?
Если я понимаю, что вы хотите, дайте 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);
Вы можете typedef
nodeType
внутри определения класса:
typedef typename T::nodeType TNode;
PathFinder<T>::getPath( TNode from, TNode to);