Я изучаю рабочий код из Game 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()
? 1010 *
Там также есть класс
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
??
Надеюсь, вы понимаете мой вопрос.