首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取模板,模板类型

获取模板,模板类型
EN

Stack Overflow用户
提问于 2012-11-20 22:34:16
回答 2查看 1.4K关注 0票数 5

我正在创建一个小的‘通用’寻路类,它接受一个类类型的Board,它将在这个类上寻找路径,

代码语言:javascript
复制
//T - Board class type
template<class T>
class PathFinder
{...}

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

我希望能够为PathFinder声明和定义一个成员函数,它将像这样接受参数

代码语言:javascript
复制
//T - Board class type
PathFinder<T>::getPath( nodeType from, nodeType to);

如何对作为参数传入函数的TnodeType节点类型进行类型兼容?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-20 22:38:03

如果我知道你想要什么,给board一个类型成员并使用它:

代码语言:javascript
复制
template<class nodeType>
class board {
  public:
    typedef nodeType node_type;
  // ...
};

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

如果不能更改board,也可以对其进行模式匹配

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-11-20 22:37:53

您可以在类定义中typedef nodeType

代码语言:javascript
复制
typedef typename T::nodeType TNode;
PathFinder<T>::getPath( TNode from, TNode to);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13475439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档