假设我有一个类模板如下
template <class t>
class Node{
T data;
Node<T>* nxt;
}
我的问题是当我们想要一个指向类 Node
的指针时,为什么我们不能使用 Node* nxt
Node*<T> nxt
之间有什么区别?和 Node* nxt
?
最佳答案
实际上,写Node* nxt
是有效的在类模板定义中,它将与 Node<T>* nxt
具有相同的含义.一般来说,类模板里面的定义C
带模板参数 T1
, T2
, ... 之类的,你可以简单地写 C
它将等同于 C<T1, T2, ...>
.试试吧,它会编译。 (更准确地说,类型 Node
的行为就像它被声明为类中的嵌套类型一样。)
在 类定义(和任何成员函数定义)之外,您必须提供模板参数,而不仅仅是编写 Node
就其本身而言,因为名称 Node
表示一个模板,而不是一个类;类模板不是类型,用模板参数实例化类模板得到的类是类型。
关于c++ - 模板名和类模板名的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28759320/