私は関数borderの各ノードの関数fを実行するための関数preorder処理を持っています。関数は次のようになります。テンプレート関数を別のテンプレート関数に渡す
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);
}
残念ながら、main関数内からクラスを呼び出すと、エラーが発生します。この呼び出しはpreorder_processing(root_ptr、print)です。そして、実際の関数「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
おっと、同じような機能のために同じエラーメッセージが2つあり、間違ったものを投稿しました。私の悪い。 preorder_processing()はエラーメッセージのinorderではありません。 – vanchagreen