我正在研究从游戏AI通过示例书的工作代码,并有一部分我不明白。我可以依靠模板类型吗?
有
template <class node_type, class edge_type>
class SparseGraph
{ ... };
和
int SparseGraph<node_type, edge_type>::AddNode(node_type node)
{
if (node.Index() < (int)m_Nodes.size())
...
}
怎么能node.Index()
叫什么名字?
也有类
class GraphNode
{
public:
...
int Index()const{return m_iIndex;}
....
};
和图形与此类
typedef SparseGraph<GraphNode, GraphEdge> NavGraph;
NavGraph * m_pGraph;
让我明白了什么node.Index()
做创建,但 我怎么能叫node.Index()
虽然没有保证node_type
是GraphNode
。
如果node_type
不是GraphNode
?
希望你能理解我的问题。
我想你需要一本好书,告诉你模板是如何工作的。 “鸭子打字”是关键字。 – Xeo 2011-05-31 19:45:45
@Xeo:如果您不想阅读由熟悉动态编程语言的人撰写的大量博客文章,请参阅“参数多态性”。 :-P – ildjarn 2011-05-31 20:00:17
@ildjarn:但鸭子打字听起来更好。 :( – Xeo 2011-05-31 20:46:35