我有一个模板化的节点类声明为
template <class T_>
class Node : public std::iterator<std::bidirectional_iterator_tag, T_, T_>
{
...
}
哪种方法正常,我正在尝试将此现有类应用于新的链表类。
我想通过调用
的内容来创建它 LinkedList<float> nodeList;
它隐式采用给定的类型,并且在类的结构中将其处理为类型T _的节点。
有没有办法在不将节点作为LinkedList的子类的情况下执行此操作?
答案 0 :(得分:1)
这是你要问的吗?
template <class T_>
class LinkedList
{
public:
typedef Node<T_> node_type;
void AddNode(node_type *node)
{ /*...*/ }
};
从技术上讲,typedef
不是必需的,但IME以这种方式键入dede依赖类型是一个很好的实践。
答案 1 :(得分:0)
如果我理解你的问题是正确的,你需要使用模板化的类类型来实例化一个类模板。使用以下语法:
LinkedList<Node<float> > nodeList;
(注意> >
之间的空格;添加它总是一个好主意,因为某些编译器的旧版本在区分这些结构和移位运算符>>
时遇到了麻烦子>
答案 2 :(得分:0)
您可以将迭代器作为默认模板参数提供:
template<
class T,
class Iterator = Node<T>
> class LinkedList
{
// ...
};