我正在尝试在 C++ 中创建一个树类,但我不确定在使用递归时应该如何使用模板。
例如我有以下功能:
template <typename Data>
void destroyTree(typename AVLTree<Data>::Node* element) {
if(!element) {
return;
}
destroyTree(element->getLeft());
destroyTree(element->getRight());
delete element;
}
或者应该是:
template <typename Data>
void destroyTree(typename AVLTree<Data>::Node* element) {
if(!element) {
return;
}
destroyTree<Data>(element->getLeft());
destroyTree<Data>(element->getRight());
delete element;
}
那么如果我从以下函数中调用它:
template <typename Data>
void AVLTree<Data>::function() {
destroyTree(root);
}
或者:
template <typename Data>
void AVLTree<Data>::function() {
destroyTree<Data>(root);
}
我尝试结合上述大多数可能性,但总是出错。通常它是一个non matching function for call to
如果有人对这个问题有一些经验,请帮助我。
谢谢你。
如果我使用 Nawaz 的建议,我会收到以下错误:
内部生成器用于构建 ** g++ -O0 -g3 -Wall -c -fmessage-length=0 -oAVLTest.o ..\AVLTest.cpp g++ -oAVLTree.exe AVLTest.o AVLTest.o:在函数 ZN15Data_Structures7AVLTreeIiE4Node7getLeftEv' 中: C:/Users/Alex/workspace/AVLTree/Debug/../AVLTree.h:(.text$_ZN15Data_Structures11destroyTreeIiEEvPNS_7AVLTreeIT_E4NodeE[void Data_Structures::destroyTree(Data_Structures::AVLTree::Node*)]+0x47):未定义对Data_Structures的引用: :AVLTree::Node::~Node()' collect2: ld returned 1 exit status 发生构建错误,构建停止 耗时:532 ms。
我该怎么办?
所有相关代码都在这里。