c++ - 模板名和类模板名的区别

标签 c++ templates

假设我有一个类模板如下

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/

相关文章:

c++ - 在 Mac C++ Eclipse 上运行 opengl 和 glut

c++ - 是否可以交错参数包?

c++ - 如何将qdate添加到qtableview

c++ - 模板继承 : There are no arguments that depend on a template parameter

c++ - 如何专门化 'partially'成员方法?

c++ - 如何创建一个以另一个模板为模板的模板化类

c++ - 问题重构奇怪地重复出现的模板模式

c++结构运算符重载不起作用

javascript - Meteor Startup JQuery DOM 元素未就绪(JQueryUI 可拖动)

c++ - 为什么随机分布不将引擎作为模板参数?