所以,我有一個函數,預處理,它是爲了在bst的每個節點中的每個項目上執行函數f。功能如下:將模板函數傳遞到另一個模板函數
template <class Item, class Key, class Process>
void preorder_processing(bstNode<Item, Key>*& root, Process f)
{
if (root == NULL) return;
f(root);
preorder_processing(root->left(), f);
preorder_processing(root->right(), f);
}
不幸的是,當我從主函數內部調用類時,出現錯誤。調用是preorder_processing(root_ptr,print);而實際的功能 '打印' 是:
template<class Item>
void print(Item a)
{
cout << a << endl;
}
的錯誤是:
bstNode.cxx:23: error: no matching function for call to ‘
preorder_processing(bstNode<int, long unsigned int>* <unresolved overloaded function type>)
’
有誰知道這是怎麼回事?
你需要給'inorder_processing()'函數的聲明。什麼是print()函數呢? – iammilind
哎呀,我有兩個相同的錯誤消息,類似的功能,並張貼錯誤的。我的錯。它的preorder_processing()不在錯誤消息中。 – vanchagreen