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 が 1 つの終了ステータスを返しました ビルド エラーが発生し、ビルドが停止しました 消費時間: 532 ミリ秒。
私はそれで何ができますか?
関連するコードはすべてここにあります。