我有以下代码:
template <typename T>
class Node{
public:
Node<T>(T data){
this->data = data;
}
T data;
Node<T> left;
Node<T> right;
};
但它不喜欢我如何拥有与它们所在的类相同类型的成员变量,因为编译器不知道“节点”是什么。
最佳答案
你要申报left
和 right
作为Node<T> *
:
Node<T> *left;
Node<T> *right;
问题不只是编译器还没有完整的定义,而是你试图说一个节点包含两个其他节点,所以节点的大小没有合理的定义。
关于c++在该类中声明该类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11182806/