【发布时间】:2010-12-23 09:40:20
【问题描述】:
这是我正在尝试使用的提供的函数模板:
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 中的指向成员函数的指针 (...)’
make: *** [CityDb.o] 错误 1
这是对函数模板中f( node_ptr->data() );行的引用。
这是针对数据结构项目的。赋值被修改了,所以我们不需要将函数传递给函数,但是我对这个感兴趣已经有一段时间了,我觉得我几乎在这里。我已经用尽了 Google 和 Lab TA,所以如果 StackOverflow 有想法,他们将不胜感激。
【问题讨论】:
标签: c++ templates pointers function-pointers argument-passing