C++ 模板<;类别=无效*>;,请解释一下
我正在读一本书,书中有一个人列出了一个链表 他创建了一个这样的类C++ 模板<;类别=无效*>;,请解释一下,c++,templates,void-pointers,C++,Templates,Void Pointers,我正在读一本书,书中有一个人列出了一个链表 他创建了一个这样的类 template < class extra_info = void*> class NavGraphNode : public GraphNode { protected: //the node's position Vector2D m_vPosition; extra_info m_ExtraInfo; public: /*INTERFACE OMITTED */ }; template 类NavGraphN
template < class extra_info = void*>
class NavGraphNode : public GraphNode
{
protected:
//the node's position
Vector2D m_vPosition;
extra_info m_ExtraInfo;
public:
/*INTERFACE OMITTED */
};
template
类NavGraphNode:公共GraphNode
{
受保护的:
//节点的位置
向量2D m_位置;
额外信息m_额外信息;
公众:
/*省略接口*/
};
他解释说,额外的信息可以是例如枚举值或指针
到节点与之成对的实例。但我不太明白第一句话,
例如阅读
如果指定类型(为什么不作废*额外信息?)
那么为什么要首先使用模板呢
谢谢
=void*
是默认的模板参数。即,如果在实例化模板时未指定类型,则使用void*
<代码>导航图形节点n代码>将使用void*
作为额外信息实例化模板
但是,可以显式指定类型,然后使用此类型。例如,您可以使用
NavGraphNode
向图形节点添加一个整数作为额外信息。您还可以使用整个结构或指向这些结构的指针来向节点添加更多信息。如果有人想在NavGraphNode
类中存储更多信息,并且可以指定他们想要存储的信息类型,那么这就是一种扩展点
NavGraphNode<bool> visitedNavGraphNode;
NavGraphNode访问NavGraphNode;
如果此类客户机对存储任何附加信息不感兴趣,则该客户机只需忽略并创建一个普通实例,如下所示:
NavGraphNode<> simpleNavGraphNode;
NavGraphNode simpleNavGraphNode;
从您链接到的页面:“还可以为类模板参数设置默认值或类型。”。这就是=void*
部分的内容。太快了,谢谢!完美的答案(虽然我还不能接受)