如何在嵌套类中实现模板

How to implement template throughout nested classes?

本文关键字:实现 嵌套      更新时间:2024-05-10

我正在尝试使用以下代码实现二进制树,我想自动创建在二进制树中传递的类型的节点,但我不知道如何做到这一点。请帮助。感谢

template <typename X>
class binaryTree{
template <typename X>
class node{
X data;
node<X>* left;
node<X>* right;
};
};

您不需要第二个template <typename X>。此外,如果每个节点都拥有其左右节点,则可以考虑删除析构函数中的leftright指针。

#include <iostream>
template <typename X>
class binaryTree
{
public:
class node
{
public:
X data;
node *left;
node *right;
~node()
{
delete left;
delete right;
}
};
node root;
};
int main()
{
binaryTree<int> tree{
binaryTree<int>::node{ 
1,
new binaryTree<int>::node {2, nullptr, nullptr},
new binaryTree<int>::node {3, nullptr, nullptr}
}
};
auto& root = tree.root;
std::cout << root.data << 'n' << root.left->data << 'n' << root.right->data << 'n';
}

输出:

1
2
3