在模板类中声明模板成员变量在Xcode中不起作用

时间:2015-10-08 02:37:34

标签: c++ xcode templates

我只是想创建一个简单的Node模板类,但由于某种原因,Xcode C ++编译器不喜欢T值。我得到的错误是Field有一个不完整的类型'T'。

template < class T>
class Node
{
public:
    T value;
    Node<T> next;
};

1 个答案:

答案 0 :(得分:1)

Node<T> next;

next定义为Node的实例,但后者尚未完全定义,因此编译器不知道如何构造内部NodeNode需要成为指针

Node<T>* next; // or, better, a smart pointer

通过这种方式,编译器不需要知道&#34;遇到行Node<T>Node<T>* next;的完整定义。它只需要存储一个指向Node<T>的指针,它与任何其他指针一样,在4或8字节上表示(在大多数架构上)。因此,编译器不需要知道Node<T>的完整定义。