Получить шаблон, тип шаблона

Я создаю небольшой «общий» класс поиска пути, который принимает тип класса 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 что подается в функцию как параметр?

5

Решение

Если я понимаю, что вы хотите, дайте 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);
6

Другие решения

Вы можете typedef nodeType внутри определения класса:

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector