所以,我正在看我教授给我的一个代码,但我不知道虚空(* f)意味着什么,有人可以澄清吗?
template<class T>
void BinaryTree<T>::inorder( void (*f)(const T&), BTNode<T> *node ) const //<-- right here
{
if (!node)
return;
inorder(f, node->left);
f(node->elem);
inorder(f, node->right);
}
答案 0 :(得分:5)
它是指向返回void
并取const T&
参数的函数的指针。指针的名称,如果f
。
void foo(const T&); // a function declaration
void (*f)(const T&); // function pointer
f = &foo; // Can assign &foo to f, return type and signature match
答案 1 :(得分:0)
在C ++中,将F
类型映射到类型X
的函数的指针Y
表示为Y (*F)(X)
。
答案 2 :(得分:0)
这是功能指针。 该函数获取一个指针指针作为参数。
但由于这已经是模板c ++,我会尽量避免这种情况。最好使用仿函数。 (但由于某种原因可能是它的函数指针)