对于作业,我必须实现一个二叉树(不使用STL二叉树)容器。除了一个以外,我拥有所有的树功能。实现我自己的二叉树
链接到我的代码: https://github.com/matthamil/BinaryTree
在bt_class.h,我有一个模板,实现我的binary_tree模板类。
在bintree.h中,我有我的binary_tree_node类与模板实现。
在main.cpp中,我有一堆测试以确保函数的工作。
我的问题是在这里:
template <class Item>
Item binary_tree<Item>::retrieve() const
{
return current_ptr->data();
}
我需要这个函数的返回类型为的任何存储binary_tree_node中的数据类型。我不知道如何完成这一点。
在当前的实现中,它返回一个指向当前节点的指针。
我应该能够编写
cout << test->retrieve();
在main.cpp中
,输出将是任何当前节点的数据。然而,因为它返回一个指针,我必须添加额外的步骤:
*first = test->retrieve();
cout << first->data() << endl;
//"first"
任何人都可以提供任何帮助吗?
没有人会在链接上查看您的代码。请发布[MCVE](http://stackoverflow.com/help/mcve)。 –
如果你的树有当前节点,你已经犯了一个重大的设计问题。 –
您将'Item'('binary_tree'的模板参数)作为节点类型,而不是值类型。这是一个不寻常的选择,也许应该修复。如果你没有解决这个问题,你的检索定义可以使用C++ 11的'auto'功能来推导出值类型,或者更复杂的模板编码可以使值类型显式化。 – JSF