我正在通过示例书查看来自Game AI的工作代码,并且有一部分我不明白.
有
template <class node_type, class edge_type>
class SparseGraph
{ ... };
Run Code Online (Sandbox Code Playgroud)
和
int SparseGraph<node_type, edge_type>::AddNode(node_type node)
{
if (node.Index() < (int)m_Nodes.size())
...
}
Run Code Online (Sandbox Code Playgroud)
怎么node.Index()称呼?
还有课
class GraphNode
{
public:
...
int Index()const{return m_iIndex;}
....
};
Run Code Online (Sandbox Code Playgroud)
并使用此类创建图形
typedef SparseGraph<GraphNode, GraphEdge> NavGraph;
NavGraph * m_pGraph;
Run Code Online (Sandbox Code Playgroud)
让我明白了什么node.Index()做的,但我怎么能叫node.Index()虽然没有保证node_type的GraphNode.
如果node_type不是GraphNode?
希望你理解我的问题.
如果node_type不是GraphNode,那么你的编译器会砸你并抛出一个错误.但是,如果您的类依赖于Index函数,那么您应该将其记录为一个要求,并且GraphNode的任何替换都必须提供它,可能具有一些预期的语义.
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |