我只是想创建一个简单的 Node 模板类,但出于某种原因,Xcode C++ 编译器不喜欢 T 值。我收到的错误是 Field 的类型“T”不完整。
template < class T>
class Node
{
public:
T value;
Node<T> next;
};
最佳答案
Node<T> next;
定义next
作为 Node
的实例,但后者尚未完全定义,因此编译器不知道如何构造内部 Node
. Node
需要是一个指针
Node<T>* next; // or, better, a smart pointer
这样一来,编译器就不需要“知道”Node<T>
的完整定义了。当遇到 Node<T>* next;
行时.它只需要存储一个指向 Node<T>
的指针。 ,与任何其他指针一样,(在大多数体系结构上)以 4 或 8 个字节表示。由于这个原因,编译器不需要知道 Node<T>
的完整定义。 .
关于c++ - 在模板类中声明模板成员变量在 Xcode 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005672/