これは私が使用しようとしている提供された関数テンプレートです:
template <class Process, class BTNode>
void postorder(Process f, BTNode* node_ptr)
{
if (node_ptr != 0)
{
postorder( f, node_ptr->left() );
postorder( f, node_ptr->right() );
f( node_ptr->data() );
}
}
これは私の呼び出しであり、私が渡している関数です:
void city_db::print_bst() {
postorder(&city_db::print, head);
}
void city_db::print(city_record target)
{
std::cout << target.get_code();
}
これは、コンパイル時 (G++) エラーです。
CityDb.cpp:85: ここからインスタンス化
BinTree.template:80: エラー: ' を使用する必要があります。' または '-> ' 'f (...)' でメンバーへのポインタ関数を呼び出す</p>
make: *** [CityDb.o] エラー 1
これはf( node_ptr->data() );
、関数テンプレートの行を参照しています。
これはデータ構造プロジェクト用です。関数に関数を渡す必要がないように割り当てが変更されましたが、私はかなり前からこれに興味があり、ほとんどここにあるような気がします。私は Google とラボの TA を使い果たしたので、StackOverflow にアイデアがあれば大歓迎です。